Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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


Т.е создаем файл



если убрать строку сохранения листа и его закрытия то он появляется на пол секунды и исчезает

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 Father



Вопросов: 0
Ответов: 159
 Профиль | | #1 Добавлено: 07.01.09 00:20
  1.  
  2. Private Sub Form_Load()
  3. Dim ExcelSheet As Object ' это переменная объекта, который будет уничтожен при выходе из процедуры Form_Load
  4. Set ExcelSheet = CreateObject("Excel.Sheet")
  5. End Sub


Вывод: объявить вне процедуры.
  1.  
  2. Dim[Public,Private] ExcelSheet As Object
  3. Private Sub Form_Load()



типа //папка, файл то выдает ошибку.

\\server\folder\file.xls '?

Ответить

Номер ответа: 2
Автор ответа:
 jamba1919



Вопросов: 8
Ответов: 9
 Профиль | | #2 Добавлено: 08.01.09 10:53
Спасибо!
Все работает. По поводу сетки пропусил одну из папок в пути к файлу.
Есть одна проблемка. При открытии второго файла Эксель при существующем открытом первом выдает ошибку. Как я думаю это из за того что переменная ExcelSheet уже занята
под первый лист. Как быть в этой ситуации?

Private Sub GetExel_Click()
SiteLoad = ";DN2011"

If DN2011.Value = True Then
   SiteLoad = ";DN2011"
ElseIf DN2417.Value = True Then
   SiteLoad = ";DN2417"
Else: DN3602.Value = True
   SiteLoad = ";DN3602"
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) = ";DDF_Port"
                            ExcelSheet.ActiveSheet.Cells(1, 4) = "MUX_Port"
                            ExcelSheet.ActiveSheet.Cells(1, 5) = "EQUIP"
                            ExcelSheet.ActiveSheet.Cells(1, 6) = ";DDF_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.
  1. Option Explicit
  2. 'Microsoft Excel XX.X Object Library
  3. Private exl As Excel.Application 'As Object
  4. Private Sub Form_Load()
  5.     Set exl = New Excel.Application ' = CreateObject("Excel.Application")
  6.     exl.Visible = True
  7.     '
  8.     Dim wbk As Excel.Workbook
  9.     Set wbk = exl.Workbooks.Add
  10.     '
  11.     exl.Worksheets("Лист1").Cells(1, 1) = 1
  12.     exl.Worksheets("Лист2").Cells(1, 1) = 2
  13.     exl.Worksheets("Лист3").Cells(1, 1) = 3
  14.     '
  15.     Dim wsht As Worksheet 'As Object
  16.     Set wsht = wbk.Worksheets.Add()
  17.     wsht.Cells(1, 1) = 4
  18. End Sub


Тогда, используя корневой объект Excel.Application, обращайся к книгам, листам в них и прочее, как фантазия подскажет.

Ответить

Номер ответа: 4
Автор ответа:
 jamba1919



Вопросов: 8
Ответов: 9
 Профиль | | #4 Добавлено: 09.01.09 10:56
Спасибо за подсказку!
нашел неплохой миниучебник для начинающих по этой теме. переделал по нормальному
все работет)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам