Работа с Excel из VB6

Узнай цену своей работы

Формулировка задачи:

две недели назад открыл для себя программирование, начал с

vba,

так как хотел оптимизировать свою работу в

excel.

Сейчас пробую написать программулину(на

VB6,

он ведь ближе всего к vba) для автоматического добавления своих макросов в книгу.

Начал я с добавления

Microsoft Excel 8.0 Object Library.

И застрял в самом начале

Листинг программы
  1. Private Sub Start_Click()
  2. Dim V As Variant
  3. 'On Error GoTo ErrorHandler
  4. Excel.Application.Visible = True
  5. V = Application.GetOpenFilename '("Excel Files (*xls)") - выдает ошибку
  6. Excel.Application.Workbooks.Open (V)
  7. With Excel.Application.Workbooks(V).VBProject.VBComponents
  8. ' ошибка Excel.Application.Workbooks(V).Path <> subscript out of range
  9. .Import Excel.Application.Workbooks(V).Path & "\Macro\MD.bas"
  10. .Import Excel.Application.Workbooks(V).Path & "\Macro\mw2.frm"
  11. .Import Excel.Application.Workbooks(V).Path & "\Macro\CFormChanger.cls"
  12. End With
  13. Exit Sub
  14. ErrorHandler:
  15. MsgBox "Программная ошибка! vbOKOnly, "Внимание!"
  16. End Sub

Помогите плиз

null
Листинг программы
  1. Excel.Application.Workbooks(V).Path

пробовал

Листинг программы
  1. Excel.Application.ThisWorkbook.Path

тоже выдает ошибку

Решение задачи: «Работа с Excel из VB6»

textual
Листинг программы
  1. Private Sub Start_Click()
  2.     Dim objExApp As Object, wbBook As Object
  3.     Dim sFullPath As String, sPath As String, sWBName As String
  4.     'V = Application.GetOpenFilename 'У Вас же есть в VB диалог выбора файлов. Зачем использовать для этого Excel?
  5.    'Workbooks(V) - и в VBA у Вас это работало? коллекция Workbooks содержит имена книг(с расширениями), а не полные пути к файлам
  6.    'добавляем на форму "Microsoft Common Dialog Control 6.0" из контролов. Если среди контролов нет - добавляем: Проект-Компоненты
  7.    '
  8.    CommonDialog1.Filter = "Excel (*.xls*)|*.xls*"
  9.     CommonDialog1.ShowOpen
  10.     sFullPath = CommonDialog1.FileName
  11.     If sFullPath = "" Then Exit Sub
  12.     sWBName = Dir(sFullPath, 16)
  13.     sPath = Replace(sFullPath, sWBName, "")
  14.     'создаем новый экзмпляр Excel
  15.    Set objExApp = CreateObject("Excel.Application")
  16.     'On Error GoTo ErrorHandler
  17.    objExApp.Visible = True
  18.     objExApp.Workbooks.Open sFullPath
  19.     With objExApp.Workbooks(sWBName).VBProject.VBComponents
  20.         ' ошибка Excel.Application.Workbooks(V).Path <> subscript out of range
  21.        .Import sPath & "Macro\MD.bas"
  22.         .Import sPath & "Macro\mw2.frm"
  23.         .Import sPath & "Macro\CFormChanger.cls"
  24.     End With
  25.     'освобождать ресурсы тоже надо:
  26.    wbBook.Close 0 'закрываем книгу без сохранения
  27.    objExApp.quit
  28.     Set wbBook = Nothing: Set objExApp = Nothing
  29.     Exit Sub
  30. ErrorHandler:
  31.     If Not objExApp Is Nothing Then objExApp.quit
  32.     Set objExApp = Nothing
  33.     MsgBox "Программная ошибка!", vbOKOnly, "Внимание!"
  34. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.267 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут