Joy1979 Ответов: 1

Visual basic 6-экспорт в Excel 2010/2013 не работает


Привет Друзья,

Я застрял в этом вопросе и нуждаюсь в вашей помощи.

У нас есть одно приложение VB6, которое читает файл Excel (в основном как шаблон) и записывает данные в определенные ячейки, а затем экспортирует их в xls.

Проблема заключается в том, что лист excel не открывается в версии office 2013. Когда я открываю файл, все пусто. Но размер файла указывает на то, что в него были записаны данные. Более того, документ открывается в Google docs, но не в версии office 2013.

Ниже, пожалуйста, найдите мой код для него. (фактический код слишком длинный, поэтому я не могу вставить его сюда).

Set xlApp = Excel.Application
   Set xlBook = GetObject("file.xls")
   Set xlSheet = xlBook.Worksheets(1)
   Set xlsheet2 = xlBook.Worksheets(2)

 --logic

   xlBook.SaveAs output.xls 


(Обратите внимание: я использую Windows 7 - 64-битную систему. Я использую все необходимые DLL файлы)

Любая помощь будет оценена по достоинству. Заранее большое спасибо!!

Maciej Los

Пожалуйста, предоставьте более подробную информацию о том, как вы объявляете переменные...

1 Ответов

Рейтинг:
6

Maciej Los

Вы не предоставили достаточно информации о своей проблеме, особенно о причине такого поведения. Вы тоже не предоставили свой код. Ну, мы можем только догадываться...

Прежде всего, я бы посоветовал почитать о Использование раннего и позднего связывания в автоматизации[^], Раннее и позднее связывание (Visual Basic)[^].

Как только вы используете:

Set xlApp = Excel.Application 'early binding

и затем
Set xlBook = GetObject("file.xls") 'late binding

Вам нужно решить, какой метод привязки вы хотите использовать.

Во-вторых, вам нужно использовать объект и методы Excel:
Dim xlApp As Object
Dim xlWbk AS Object
Dim xlWsh AS Object

Set xlApp = CreateObject("Excel.Application")
Set xlWbk = xlApp.Workbooks.Open("FullFileName.xls")
Set xlWsh = xlWbk.Worksheets("SheetName")

With xlWsh
    .Range("A1") = "Test"
    .Range("C3") = 3
End With

'...

'finally, clean up:
xlWsh = Nothing
xlWbk.Close SaveChanges:=True
xlWbk = Nothing
xlApp.Quit
xlApp = Nothing



В-третьих, существуют известные проблемы с MS Office 2010/2013:
Проблемы совместимости в Office 2013[^]
Надстройки на базе VB6 могут не работать в Office 2013[^]

Наконец, пожалуйста, обратитесь к этому:
Основное обучение для разработчиков Visual Basic 6[^]

Кстати: я хотел бы сказать: кто хочет использовать VB6, когда VB.NET является ли он более мощным, эффективным и т. д.?


CHill60

5 б. Особенно мне нравится Ссылка на Essential Training - новая для меня.
Я также нашел " книгу Visual Basic 2005 - .NET Insight for Classic VB Developers " довольно хорошо (Matthew MacDonald No Starch Press ISBN: 1-59327-074-7)

Maciej Los

Спасибо, остынь ;)

Joy1979

Привет Мацей Лос и Chill60. Извините за мой поздний ответ.
Спасибо Мацей Лос, я применил логику, упомянутую в вашем ответе. Работает как положено!! Работа ото.

Maciej Los

Пожалуйста ;)