Visual Basic to Excel

5 отговора 0 прегледа
#1

Visual Basic to Excel

Здравейте
Пиша от бейсика в ексел по следния начин:
Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range

Set oXL = CreateObject("Excel.Application")
oXL.Visible = True

oXL.Workbooks.Open (App.Path & "\Razhod.xls")
Set oWB = GetObject(App.Path & "\Razhod.xls")
oWB.Application.Visible = True
oWB.Windows(1).Visible = True
....
....
като след това имам писане в определени клетки.

Всичко си върви нормално с кода, въпроса е че когато го компилирам на машина с ХР и ексел 2003 и кача програмата на друга машина с ХР, но с ексел 97 ми дава грешка и затваря екзето, предполагам че проблема идва от това, но незнам как да го реша.
На машината с 97 няма как да се качи бейсика и да се компилира там.

Отговор
в отговор на Dido #2

Re: Visual Basic to Excel

А с какво компилираш?

Щирлиц
Отговор
в отговор на Dido #4

Re: Visual Basic to Excel

Точно преди да компилираш промени декларациите на
Dim oXL As Object ' Excel.Application

Dim oWB As Object ' Excel.Workbook
Dim oSheet As Object ' Excel.Worksheet
Dim oRng As Object ' Excel.Range

за да ползваш late-bound извиквания. Иначе дръж оригиналните в IDE-то да ти работи intellisense-а.

cheers,
</wqw>


[линк]
Отговор
в отговор на wqw #5

Re: Visual Basic to Excel

а трябва ли да включвам друга референция, освен Microsoft Excel 11.0 Object Library?

Отговор
в отговор на Dido #6

Re: Visual Basic to Excel

Не. Аз лично предпочитам да ползвам възможно най-ниската версия на обектната библиотека -- примерно от Office 2000 -- за да не се "лакомя" да ползвам feature-и , които са от по-новите версии на office-а.

Btw, typelib-а ти трябва само заради intellisense-а. Ако променливите са ти декларирани As Object и създаваш инстанции с CreateObject, по време на компилация typelib-а не се ползва.

Във всички случаи typelib-а не се ползва по време на изпълнение (ползва се от Automation Marshaler при multi-threaded извиквания, но засега не ти трябва да го знаеш това:-))

cheers,
</wqw>


[линк]
Отговор