Страница 1 из 2

Доступ из проекта VB6 к элементам книги Excel

Добавлено: 15 апр 2005, 12:34
Maks
Подскажите, как из программы VB6 заполнить данными, например,
ComboBox, расположенный на Лист1 книги Excel. До файла Excel я
достучался, а вот увидеть ComboBox не могу.

Добавлено: 15 апр 2005, 19:20
Дмит
Например так
For i = 1 To 9
Лист1.ComboBox1.AddItem Cells(i, 1)
Next

Добавлено: 18 апр 2005, 11:34
Maks
Дело в том, что в проекте Лист1 описан как объект Excel.Worksheet,
и при прямом указании на ComboBox1 вылетает ошибка:
Method or Data Member not found

Добавлено: 18 апр 2005, 22:06
Дмит
Может поможет код:

Код: Выделить всё

Dim objXl As Object, i As Long
Private Sub CommandButton1_Click()
    Set objXl = CreateObject("Excel.Application")
    objXl.Workbooks.Open "D:\Книга1.xls"
    For i = 1 To 9
        objXl.Worksheets(1).OLEObjects("ComboBox1").Object.AddItem i 
        '***или objXl.Worksheets(1).ComboBox1.Object.AddItem i
    Next
    objXl.Visible = True
End Sub
Если нет приведи свой, это надо бы сделать в первом вопросе.

Добавлено: 19 апр 2005, 10:55
Maks
За OleObjects большое спасибо. Это помогло увидеть combo.
Но вот заполнить его почему-то не удается.
У меня этот процесс выглядит так:

Private ApplXLS As Excel.Application
Private FileXLS As Excel.Workbook
Private SheetXLS As Excel.Worksheet

Set ApplXLS = New Excel.Application
Set FileXLS = ApplXLS.Workbooks.Open("File.xls")
Set SheetXLS = FileXLS.Sheets(1)

for icount = 1 to n
SheetXLS.OLEObjects(1).object.AddItem trim(rs.fields(0).value)
if icount<>n then rs.movenext
next icount

FileXLS.Save
FileXLS.Close

Set SheetXLS = Nothing
Set FileXLS = Nothing
Set ApplXLS = Nothing

OLEObjects(1) это и есть combo. В процессе работы никаких
сообщений об ошибках нет, но список combo пуст. Recordset точно
не пустой.

Добавлено: 19 апр 2005, 13:46
Игорь Акопян
а попробовать для отладки константу туда прописать?

Добавлено: 19 апр 2005, 16:37
Maks
Попробовал:
а) как Const a="ddddd", потом ...AddItem a
б) просто ...AddItem "ddddd"

не сохраняет... :(

Добавлено: 19 апр 2005, 17:55
Игорь Акопян
я вообще с ВБ не очень дружу но сделал так: открыл Эксель, скопировал твой код, убрал создание приложения и в FileXLS присвоил одну из открытых книг с КомбоБоксом (ну и естественно save и close тоже убрал) - всё присвоилось - может на мысль натолкнёт?

Добавлено: 20 апр 2005, 10:31
Maks
Если я правильно понял, то все эти действия
Игорь Акопян писал(а):... открыл Эксель, скопировал твой код, убрал создание приложения и в FileXLS присвоил одну из открытых книг с КомбоБоксом (ну и естественно save и close тоже убрал)...
ты сделал в hardcode самого Excel, если так, то с Excel проблем и у меня не возникало. А вот из проекта VB6... :cry:

Добавлено: 20 апр 2005, 18:11
Дмит
Весь код у меня работает и в VB6.
Может я неправильно подумал: Нужно сохранить значения Item и после закрытия файла? Из кода не видно когда Вы пользуетесь ComboBox.