Страница: 1 |
|
Вопрос: открытие сетевого файла
|
Добавлено: 07.01.09 00:01
|
|
Автор вопроса: jamba1919
|
Подскажите пожалуйста как работать с файлом Эксель по сети.
С файлом на диске проблем нет
Например вот так делаю
Private Sub Form_Load()
With CreateObject("Excel.Application")
.Visible = True 'по необходимости
With .Workbooks.Open(FileName:="C:\abc.xls", UpdateLinks:=0)
With .Worksheets(1)
Value1 = .Range("A1").Value
Value2 = .Range("C1").Value
Value3 = .Range("F1").Value
End With
.Close saveChanges:=True 'False
End With
.Quit
End With
Label1.Caption = Value1
Но когда ввожу сетевое имя , то не работает
типа //папка, файл то выдает ошибку.
И еще вопрос.
Как создать Экселевский лист не на каком то диске а вообще.
т.е создаем лист
заполняем его.
юзер его смотрит , если хочеи сохраняет , если не хочет просто закрывает и его нет
вот как например на диске
Private Sub Form_Load()
Dim ExcelSheet As Object
Set ExcelSheet = CreateObject("Excel.Sheet")
'делает Excel видимым через объект Application
ExcelSheet.Application.Visible = True
'помещает текст в первую ячейку электронной таблицы
ExcelSheet.ActiveSheet.Cells(1, 1).Value = "Это столбец A, строка 1"
'сохраняет электронную таблицу в каталоге C:\test.doc
ExcelSheet.SaveAs "C:\ TEST12.xls"
'закрывает Excel, вызвав метод Quit объекта Application
ExcelSheet.Application.Quit
'освобождает объектную переменную
Set ExcelSheet = Nothing
End Sub
Т.е создаем файл
если убрать строку сохранения листа и его закрытия то он появляется на пол секунды и исчезает
Ответить
|
Номер ответа: 1 Автор ответа: Father
Вопросов: 0 Ответов: 159
|
Профиль | | #1
|
Добавлено: 07.01.09 00:20
|
-
- Private Sub Form_Load()
- Dim ExcelSheet As Object
- Set ExcelSheet = CreateObject("Excel.Sheet")
- End Sub
Вывод: объявить вне процедуры.
-
- Dim[Public,Private] ExcelSheet As Object
- Private Sub Form_Load()
типа //папка, файл то выдает ошибку.
\\server\folder\file.xls '?
Ответить
|
Номер ответа: 2 Автор ответа: jamba1919
Вопросов: 8 Ответов: 9
|
Профиль | | #2
|
Добавлено: 08.01.09 10:53
|
Спасибо!
Все работает. По поводу сетки пропусил одну из папок в пути к файлу.
Есть одна проблемка. При открытии второго файла Эксель при существующем открытом первом выдает ошибку. Как я думаю это из за того что переменная ExcelSheet уже занята
под первый лист. Как быть в этой ситуации?
Private Sub GetExel_Click()
SiteLoad = "N2011"
If DN2011.Value = True Then
SiteLoad = "N2011"
ElseIf DN2417.Value = True Then
SiteLoad = "N2417"
Else: DN3602.Value = True
SiteLoad = "N3602"
End If
Set ExcelSheet = CreateObject("Excel.Sheet"
'äåëàåò Excel âèäèìûì ÷åðåç îáúåêò Application
ExcelSheet.Application.Visible = True
Row_MyList = 1
'çàãðóæàåì ñàéò â èç áàçû â ôàéë
' ïåðâàÿ --ñòðîêè ,,âòîðîå --êîëîíêè
For N_Row = 1 To 100 Step 1
If SiteLoad = MyBase(N_Row, 5) Then
Row_MyList = Row_MyList + 1 'ñòðîêè â ìîåì Ýêñåëåâñêîì ôàéëå
ExcelSheet.ActiveSheet.Cells(Row_MyList, 1) = MyBase(N_Row, Site2) 'êîïèðóåì äàííûå èç áàçû â ýêñåëü
ExcelSheet.ActiveSheet.Cells(Row_MyList, 2) = MyBase(N_Row, Eqip2)
ExcelSheet.ActiveSheet.Cells(Row_MyList, 3) = MyBase(N_Row, Ddf2)
ExcelSheet.ActiveSheet.Cells(Row_MyList, 4) = MyBase(N_Row, Mux2)
ExcelSheet.ActiveSheet.Cells(Row_MyList, 5) = MyBase(N_Row, Eqip3)
ExcelSheet.ActiveSheet.Cells(Row_MyList, 6) = MyBase(N_Row, Ddf3)
ExcelSheet.ActiveSheet.Cells(Row_MyList, 7) = MyBase(N_Row, Bsc)
ExcelSheet.ActiveSheet.Cells(Row_MyList, 8) = MyBase(N_Row, Et)
ExcelSheet.ActiveSheet.Cells(Row_MyList, 9) = MyBase(N_Row, Sites)
'çàïîëíÿåì øàïêó
ExcelSheet.ActiveSheet.Cells(1, 1) = "SITE"
ExcelSheet.ActiveSheet.Cells(1, 2) = "EQUIP"
ExcelSheet.ActiveSheet.Cells(1, 3) = "DF_Port"
ExcelSheet.ActiveSheet.Cells(1, 4) = "MUX_Port"
ExcelSheet.ActiveSheet.Cells(1, 5) = "EQUIP"
ExcelSheet.ActiveSheet.Cells(1, 6) = "DF_port"
ExcelSheet.ActiveSheet.Cells(1, 7) = "BSC"
ExcelSheet.ActiveSheet.Cells(1, 8) = "ET"
ExcelSheet.ActiveSheet.Cells(1, 9) = "SITES"
End If
Next N_Row
ExcelSheet.ActiveSheet.Range("A2:L15".Sort Key1:=ExcelSheet.ActiveSheet.Range("C2", Order1:=1 'ñîðòèðóåì òàááëèöó
End Sub
Ответить
|
Номер ответа: 3 Автор ответа: Father
Вопросов: 0 Ответов: 159
|
Профиль | | #3
|
Добавлено: 08.01.09 12:29
|
В excel есть объектная модель, которой ты пользуешся с большим неудобством, используя CreateObject.
Это точно нужно так?
Может есть смысл добавить ссылку на библиотеку в меню Project/References.
- Option Explicit
- Private exl As Excel.Application
- Private Sub Form_Load()
- Set exl = New Excel.Application
- exl.Visible = True
-
- Dim wbk As Excel.Workbook
- Set wbk = exl.Workbooks.Add
-
- exl.Worksheets("Лист1").Cells(1, 1) = 1
- exl.Worksheets("Лист2").Cells(1, 1) = 2
- exl.Worksheets("Лист3").Cells(1, 1) = 3
-
- Dim wsht As Worksheet
- Set wsht = wbk.Worksheets.Add()
- wsht.Cells(1, 1) = 4
- End Sub
Тогда, используя корневой объект Excel.Application, обращайся к книгам, листам в них и прочее, как фантазия подскажет.
Ответить
|
Страница: 1 |
Поиск по форуму