Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Закрытие книги Excel в текстовом формате
 
 автор: Stas   (02.02.2007 в 15:24)   личное сообщение
 
 

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 тоже ничего хорошего не дает. Может, кто подскажет, какой объект надо использовать?

  Ответить  
 
 автор: osmor   (02.02.2007 в 16:04)   личное сообщение
 
 

Попробуйте
вместо:
Set xlBook = CreateObject("Excel.Sheet")
написать
Set xlBook = xlApp.Workbooks.Add

  Ответить  
 
 автор: Stas   (02.02.2007 в 16:22)   личное сообщение
 
 

Увы, такая же ошибка

  Ответить  
 
 автор: osmor   (02.02.2007 в 16:29)   личное сообщение
 
 

Ссылка на EXCEL установлена?

  Ответить  
 
 автор: Stas   (02.02.2007 в 16:47)   личное сообщение
 
 

Да, установлена
Dim xlApp As Object 

Set xlApp = CreateObject("Excel.Application")

  Ответить  
 
 автор: osmor   (02.02.2007 в 16:55)   личное сообщение
 
 

Нет я имее ввиду в референсах?
при редактировании модуля меню "tools"-"references"
В общем предположение таково, поскольку вы использует
Dim xlApp As Object
и
CreateObject
то ссылка у вас не установлена (при таком обращении это не обязательно)
но в тоже время вы используете именованные константы EXCEL, что без ссылки на библиотеку EXcel в Refereces недопустимо, а поскольку у ВАс видимо не установлено обязательное описнани переменных
Option Explicit
то ACCESS это поглатывает, но когда пытается вызвать сохранение документа с параметров равным NULL (FileFormat:=xlText) поскольку ACCESS ничего не знает о значениии xlText - это константа EXCEL, то это и вызывает ошибку

  Ответить  
 
 автор: Stas   (02.02.2007 в 17:12)   личное сообщение
 
 

Да, да, да. Спасибо большущее, ссылка, действительно, установлена не была, а теперь все заработало для объекта xlApp

  Ответить  
 
 автор: osmor   (02.02.2007 в 17:17)   личное сообщение
 
 

Отсюда вывод
Нужно всегда использовать опцию Option Explicit для обязательного описания переменных

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

  Ответить  
 
 автор: Explorer   (02.02.2007 в 17:26)   личное сообщение
 
 

>Нужно всегда использовать опцию 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.

  Ответить  
 
 автор: ДрЮня   (02.02.2007 в 16:36)   личное сообщение
 
 

а если так попробовать:

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

  Ответить  
 
 автор: Stas   (02.02.2007 в 16:52)   личное сообщение
 
 

А что такое
Set appEx = New Excel.Application ?
оно ни под каким соусом не работает. Пробовал писать
Dim appEx As Object
...
Set appEx = New Excel.Application
тогда ошибка User-defined type not defined
Пробовал без объявления - такая же ошибка

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList