powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / OLE Excel как шаблон
9 сообщений из 9, страница 1 из 1
OLE Excel как шаблон
    #39605477
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Уважаемый форум,

Поиск не помог. Проблема: есть ОЛЕ-объект на форме, в котором открывается Эксель-файл. Этот файл служит шаблоном для программного заполнения. Есть код, который вызывает этот файл для заполнения. Проблема в ругани Аксесса (ошибка 1004) для кода:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim xl As Excel.Application, xbk As Excel.Workbook, xsh As Excel.Worksheet

        Me.OLEBound806 = DLookup("Stencil", "ACC_Stencils", "Sten_Name='Inspection_Form_2018'")                       <= ищет правильный шаблон в таблице
        Me.OLEBound806.Action = acOLEActivate
        Set xl = GetObject(Class:="Excel.Application")
        Set xbk = xl.ActiveWorkbook
        xbk.SaveAs "C:\Users\" & Environ("USERNAME") & "\Desktop\test.xlsx", xlNormal               <= вот тут ругается
        xbk.Close
        Set xbk = Excel.Workbooks.Open("C:\Users\" & Environ("USERNAME") & "\Desktop\test.xlsx")
.... заполняем сохраненную копию...



В старом Офисе 2003 работало на ура.
Сейчас Access 2013, Windows 7
...
Рейтинг: 0 / 0
OLE Excel как шаблон
    #39605485
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1004 - противная ошибка, бороться приходится шаманскими методами с большим бубном.

А зачем вы сохраняете объект таким способом? Активация ОЛЕ объекта довольно длительная операция, для того, чтобы просто сохранить файл она не нужна.
Я обычно храню шаблоны в таблице в полях типа Attachment, при старте приложения выгружаю их все на диск (быстрая операция), а при необходимости просто копирую эти файлы в рабочий каталог, заполняю данными и сохраняю. Работает очень быстро.
...
Рейтинг: 0 / 0
OLE Excel как шаблон
    #39605488
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Укажите правильный формат - xlOpenXMLWorkbook (51).
...
Рейтинг: 0 / 0
OLE Excel как шаблон
    #39605497
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
MrShin1004 - противная ошибка, бороться приходится шаманскими методами с большим бубном.

А зачем вы сохраняете объект таким способом? Активация ОЛЕ объекта довольно длительная операция, для того, чтобы просто сохранить файл она не нужна.
Я обычно храню шаблоны в таблице в полях типа Attachment, при старте приложения выгружаю их все на диск (быстрая операция), а при необходимости просто копирую эти файлы в рабочий каталог, заполняю данными и сохраняю. Работает очень быстро.

У меня шаблоны тоже в таблице. Прога выбирает из них подходящий, сохраняет копию и заполняет ее и т.д.
А можно Ваш код посмотреть?
...
Рейтинг: 0 / 0
OLE Excel как шаблон
    #39605500
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFKА можно Ваш код посмотреть?
Код чего? Извлечения из таблицы или заполнения?
...
Рейтинг: 0 / 0
OLE Excel как шаблон
    #39605507
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
MrShin, извлечения из таблицы и сохранения на диске
...
Рейтинг: 0 / 0
OLE Excel как шаблон
    #39605511
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот код извлечения из таблицы. Тип данных - Attachment, не OLE

Public Function Get_File(lng_FileID As Long, Optional str_Destination As String, Optional str_FileName As String) As String
' extracts and saves file from attachment field
On Error GoTo ErrorHandler

Dim rst As DAO.Recordset
Dim rstA As DAO.Recordset
Dim str_SQL As String
Dim str_FullPath As String
Dim db as DAO.Database

Get_File = "Error"

Set db = CurrentDb

str_SQL = "SELECT tbl_SystemFiles.ID, tbl_SystemFiles.FileDescription, tbl_SystemFiles.ExportFileName, tbl_SystemFiles.FileLocation, tbl_SystemFiles.Attachments " _
& "FROM tbl_SystemFiles " _
& "WHERE (((tbl_SystemFiles.ID)=" & lng_FileID & "));"

Set rst = db.OpenRecordset(str_SQL, dbOpenSnapshot)

If rst.RecordCount > 0 Then

Set rstA = rst("Attachments").Value

If str_FileName = "" Then
str_FileName = rst!ExportFileName
End If

If str_Destination = "" Then
str_Destination = rst!FileLocation
End If

If Right(str_Destination, 1) = "\" Then
str_FullPath = str_Destination & str_FileName
Else
str_FullPath = str_Destination & "\" & str_FileName
End If

On Error Resume Next
Kill str_FullPath
MakeMultiDir str_Destination
rstA("FileData").SaveToFile str_FullPath

If err = 0 Then
Get_File = str_FileName
End If

On Error GoTo 0

End If

Exit_ErrorHandler:
On Error Resume Next
rst.Close
Set rst = Nothing
rstA.Close
Set rstA = Nothing
Exit Function
ErrorHandler:
Select Case err.Number
Case 70
MsgBox str_FullPath & " is currently in used. Please close the file and try again."
Case Else
gbl_DSS_Framework.DisplayUnhandledErrorMsgBox err, "bas_Get_File", "Get_File", Erl
End Select
Resume Exit_ErrorHandler
End Function
...
Рейтинг: 0 / 0
OLE Excel как шаблон
    #39605514
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, тэг не поставил сорскода. Ну, думаю, понятно будет. Там на поле второй рекрдсет открывать нужно
...
Рейтинг: 0 / 0
OLE Excel как шаблон
    #39605521
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
MrShin, спасибо, буду разбираться. :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / OLE Excel как шаблон
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]