Проблемы с экспортом в фиксированном формате в Excel

#excel #vba

#excel #vba

Вопрос:

Мне нужна помощь в понимании среды, в которой я нахожусь при использовании VBA. Я хочу просто распечатать PDF, и независимо от того, насколько прост макрос, я получаю ошибку во время выполнения:

‘1004 Ошибка, определяемая приложением или объектом.

Это неизбежно выделяет ExportAsFixedFormat ‘paragraph’ желтым цветом и выдает мне эту ошибку.

Я потратил неделю на это и упростил тестирование, создав совершенно новую книгу с поддержкой макросов, скопировав макрос в модуль1 и запустив его. Я устранил все возможные проблемы с моей средой, и это все еще доставляет мне проблемы. Я даже загрузил 64-разрядную версию, когда ранее запускал 32.

Единственное, что я могу придумать, это добавить модуль класса около месяца назад для программы лицензирования. Насколько я могу видеть, в моем приложении VBA его нигде не найти. Где бы существовал модуль класса или форма использования, кроме как в дереве Project Explorer ?!!?

Это так расстраивает, потому что ничто из этого не имеет отношения к самому макросу.

Комментарии:

1. Всегда (ОК, в 99% случаев) помогает показать код, с которым у вас возникла проблема.

2. Можете ли вы поделиться остальной частью вашего кода. Хотя вы можете сказать «неважно, насколько просто», я слышу, чего-то не хватает. Однако без остальной части вашего кода я не могу точно оценить, в чем проблема.

3. Я только что скопировал приведенный ниже код из Mark S. чтобы продемонстрировать, сколько переменных я использовал при устранении неполадок. Я хочу сосредоточиться на более важных вещах, помимо самого кода, потому что независимо от того, набираю ли я его для выполнения того, что я на самом деле хочу, или просто копирую что-то из Интернета, это неизбежно приведет к сбою. ActiveSheet. Тип экспорта в фиксированном формате: =xlTypePDF, имя файла:=FileName, _ Качество: =xlQualityStandard, IncludeDocProperties:=True, области игнорирования _:=False, OpenAfterPublish:= True

Ответ №1:

Я начинаю предварительный ответ, пока вы не предоставите дополнительную информацию (поделитесь своим кодом). Я могу вернуться, а могу и не вернуться, чтобы соответствующим образом скорректировать это.

У меня есть файл, в котором я экспортирую несколько листов в формат PDF, используя их явные имена в массиве.

 Sub PDF()
Dim FileName As String
Dim Name As String
Name = ActiveWorkbook.Worksheets("Table of Contents").Range("_Period")
Application.ScreenUpdating = False
FileName = ActiveWorkbook.FullName
FileName = Left(FileName, Len(FileName) - 5) amp; " " amp; Name amp; ".PDF"

Sheets(Array("Table of Contents", "Page 1", "Page 2", "Page 3")).Select

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName, _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, OpenAfterPublish:=True
Worksheets("Table of Contents").Select

Application.ScreenUpdating = True
End Sub
  

Я знаю, что использование .select не одобряется, но цель здесь в том, что по мере того, как мой код циклически проходит через эти листы, я хочу перейти на ту же вкладку, с которой я начал, чтобы я знал, что она циклически выполняется правильно, и там находятся мои другие кнопки и макросы.