|
|
|
| Access 2002
Конечная задача такова: Есть шаблон в эксель, в который выгужаются данные из Аксесса. после выгрузки данных получившийся файл надо сохранить как текстовый. Код перестает работать на сохранении с ошибкой SaveAs method of Workbook class failed
Dim xlApp As Object
Dim xlBook As Object
Dim ID As String
Set xlApp = CreateObject("Excel.Application")
Set xlBook = CreateObject("Excel.Sheet")
ID = Forms![BILLS Query]!ID
.......
xlBook.SaveAs Filename:="C:\" & ID & ".txt", FileFormat:=xlText, _
CreateBackup:=False
xlBook.Save
|
xlApp тоже ничего хорошего не дает. Может, кто подскажет, какой объект надо использовать? | |
|
| |
|
|
|
| Попробуйте
вместо:
Set xlBook = CreateObject("Excel.Sheet")
написать
Set xlBook = xlApp.Workbooks.Add | |
|
| |
|
|
|
| Увы, такая же ошибка | |
|
| |
|
|
|
| Ссылка на EXCEL установлена? | |
|
| |
|
|
|
| Да, установлена
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
|
| |
|
| |
|
|
|
| Нет я имее ввиду в референсах?
при редактировании модуля меню "tools"-"references"
В общем предположение таково, поскольку вы использует
Dim xlApp As Object
и
CreateObject
то ссылка у вас не установлена (при таком обращении это не обязательно)
но в тоже время вы используете именованные константы EXCEL, что без ссылки на библиотеку EXcel в Refereces недопустимо, а поскольку у ВАс видимо не установлено обязательное описнани переменных
Option Explicit
то ACCESS это поглатывает, но когда пытается вызвать сохранение документа с параметров равным NULL (FileFormat:=xlText) поскольку ACCESS ничего не знает о значениии xlText - это константа EXCEL, то это и вызывает ошибку | |
|
| |
|
|
|
| Да, да, да. Спасибо большущее, ссылка, действительно, установлена не была, а теперь все заработало для объекта xlApp | |
|
| |
|
|
|
| Отсюда вывод
Нужно всегда использовать опцию Option Explicit для обязательного описания переменных
тогда ACCESS ругался бы благим матом, что не знает такой переменной | |
|
| |
|
|
|
| >Нужно всегда использовать опцию Option Explicit для обязательного описания переменных
+1
Microsoft Visual Basic doesn't automatically require that you explicitly declare a variable before using it in a procedure
If you use a variable that hasn't been explicitly declared, Visual Basic implicitly declares it as a variable with the Variant data type. Although implicit declarations are convenient, they can lead to subtle errors in your code.
You can require that variables be declared before they are used in a procedure. Microsoft Access automatically includes an Option Explicit statement in the Declarations section of all new modules in the database, including the form and report modules associated with new forms or reports. | |
|
| |
|
|
|
| а если так попробовать:
dim sFN as string
sFN = "c:\test.txt"
Set appEx = New Excel.Application
appEx.Visible = False
With appEx
.Workbooks.Add
.ActiveWorkbook.SaveAs sFN
.Visible = True
.ActiveWorkbook.Close
End With | |
|
| |
|
|
|
| А что такое
Set appEx = New Excel.Application ?
оно ни под каким соусом не работает. Пробовал писать
Dim appEx As Object
...
Set appEx = New Excel.Application
тогда ошибка User-defined type not defined
Пробовал без объявления - такая же ошибка | |
|
| |