powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка при выгрузке отчета в Excel
9 сообщений из 9, страница 1 из 1
Ошибка при выгрузке отчета в Excel
    #38974001
astra32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При первой выгрузке отчета ошибка, мне кажется Excel просто не успевает загрузиться. Открывается, но код не отрабатывает, даже ошибок не показывает. Второй и последующие уже нормально выгружаются.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Function OpenReportXLS(NameReport As String) As String
On Error GoTo Err_OpenReportXLS_Click
    DoCmd.OutputTo acOutputReport, NameReport, acFormatXLS, "c://Report.xls", True 
'--------------------------------------------------------------------------------
Range(Selection, Selection.SpecialCells(xlLastCell)).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft 
 'Далее много кода, форматирование в Excel 2007, естсно сп2    
......   
'--------------------------------------------------------------------------------
Exit_OpenReportXLS_Click:
    Exit Function
'--------------------------------------------------------------------------------
Err_OpenReportXLS_Click:
    MsgBox "Усё пропало, шеф"
    Resume Exit_OpenReportXLS_Click
'--------------------------------------------------------------------------------
End Function
...
Рейтинг: 0 / 0
Ошибка при выгрузке отчета в Excel
    #38974032
5554
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
astra32При первой выгрузке отчета ошибка, мне кажется Excel просто не успевает загрузиться. Открывается, но код не отрабатывает, даже ошибок не показывает. Второй и последующие уже нормально выгружаются.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Function OpenReportXLS(NameReport As String) As String
On Error GoTo Err_OpenReportXLS_Click
    DoCmd.OutputTo acOutputReport, NameReport, acFormatXLS, "c://Report.xls", True 
'--------------------------------------------------------------------------------
Range(Selection, Selection.SpecialCells(xlLastCell)).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft 
 'Далее много кода, форматирование в Excel 2007, естсно сп2    
......   
'--------------------------------------------------------------------------------
Exit_OpenReportXLS_Click:
    Exit Function
'--------------------------------------------------------------------------------
Err_OpenReportXLS_Click:
    MsgBox "Усё пропало, шеф"
    Resume Exit_OpenReportXLS_Click
'--------------------------------------------------------------------------------
End Function

Где описание этого объекта?
...
Рейтинг: 0 / 0
Ошибка при выгрузке отчета в Excel
    #38974036
astra32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да это неважно, не грузит вне зависимости от этой строки. Это просто убирает лишние символы.
...
Рейтинг: 0 / 0
Ошибка при выгрузке отчета в Excel
    #38974065
astra32
Код: vbnet
1.
Range(Selection, Selection.SpecialCells(xlLastCell)).SpecialCells(xlCellTypeBlanks).Delete 

Такой код прокатывает, если выполняется в модуле Excel-я, т.к. объект ActiveSheet известен и метод Range относится к нему. У вас код выполняется в Аксе, поэтому то, что "Второй и последующие уже нормально выгружаются.", это недокументировано, т.е. - от лукавого.
Ваш код читается так - удалить все ячейки в диапазоне с А1 до пустой ячейки в последней занятой строке. Объясните, цель этого действа. Если нужно удалить все, что выгрузили, то зачем нужна выгрузка?
И что это за путь "c: // Report.xls"?

По-правильному надо получить ссылку на открытую книгу (например Set WB = GetObject("Путь к файлу") ), затем на активный лист, а уже затем выполнять его метод Range.
Кстати, использование метода Selection не рекомендуется.
...
Рейтинг: 0 / 0
Ошибка при выгрузке отчета в Excel
    #38974090
astra32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Экспортирую отчет из Access в Excel, при этом создается Report.xls, получается со сдвигом, вот и убираю пустые ячейки со сдвигом влево. Странно, что путь к файлу работает, причем работает с разными слешами)))
...
Рейтинг: 0 / 0
Ошибка при выгрузке отчета в Excel
    #38974617
astra32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ), а как надо? Ткните носом, плизь. Что-то я найти не могу, информации много, да всё не то.
...
Рейтинг: 0 / 0
Ошибка при выгрузке отчета в Excel
    #38975070
astra32а как надо? Ткните носом, плизь.
Например:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
DoCmd.OutputTo acOutputReport, NameReport, acFormatXLS, "c:\Report.xls", True 
Set WB = GetObject("c:\Report.xls")
Set WS = WB.ActiveSheet
Set rng = WS.Range(WS.Selection, WS.Selection.SpecialCells(xlLastCell)).SpecialCells(xlCellTypeBlanks)
rng.Delete

'Далее много кода 
'......   
Set rng = Nothing
Set WS = Nothing
Set WB = Nothing

Повторюсь, выделенная конструкция мне не нравится.
Я обычно пользуюсь методом UsedRange (возвращает заполненный диапазон) и методами диапазона Offset и Resize.
Например, чтоб напустить красоты в столбце В заполненного диапазона А1:Е10, и в 1-й строке - выполняется:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Set rng = WS.UsedRange
With rng.Offset(,1).Resize(,1)
'Выполняем оформление  в столбце В
End With
With rng.Resize(1)
'Выполняем оформление ячеек в 1-й строке
End With
...
Рейтинг: 0 / 0
Ошибка при выгрузке отчета в Excel
    #38978481
astra32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий ( Киев ), спасибо, Selection и в самом деле нехорошо. Range удобнее
...
Рейтинг: 0 / 0
Ошибка при выгрузке отчета в Excel
    #39187740
astra32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таком варианте работает: GetObject/CreateObject

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then
        Set xlApp = CreateObject("Excel.Application")
        Err.Clear
    End If

Set xlWbk = xlApp.Workbooks.Open(strPathExcel)
Set xlSheet = xlWbk.Worksheets("Report")
xlApp.Visible = False

    'Макрос Excel
    ....
    ....
    
xlApp.Visible = True
            
Set xlApp = Nothing
Set xlWbk = Nothing
Set xlSheet = Nothing
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка при выгрузке отчета в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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