Ошибка VBA 1004 при печати PDF - PullRequest
0 голосов
/ 25 мая 2018

У меня есть этот код:

Sub PrintPDF()



Dim wsReport As Worksheet
Dim confirm As Long
Dim filename, reportsPath As String
Dim printArea As Range

Set wsReport = ThisWorkbook.Worksheets("Test Status")
Set printArea = wsReport.Range("A1:AG80")

'Generate Reports folder path
'reportsPath = ThisWorkbook.Path & "\Reports\"
reportsPath = "C:\"
'Generate filename to be printed
Dim LValue As String

LValue = Format(Date, "yyyymmdd")


fp = reportsPath & Range("Project!clientName").Value & "_TestReport_" & LValue & ".pdf"

'Confirm or Cancel the action
confirm = MsgBox("the Test execution report (" & fp & ") will be printed as PDF in the folder " & reportsPath & " .", vbOKCancel + vbQuestion, "Printing Test report")
If confirm = vbCancel Then
    Exit Sub
End If

'Set page orientation to landscape
wsReport.PageSetup.Orientation = xlLandscape
'wsReport.PageSetup.Orientation = xlPortrait
Application.ScreenUpdating = False

With ActiveSheet.PageSetup
    .printArea = Worksheets("Test Status").UsedRange
    '.printArea = wsReport.UsedRange
    '.printArea = Worksheets("Test Status").UsedRange
    .Orientation = xlLandscape
    .FitToPagesWide = 1
    .Zoom = False 'I have added this line
End With

printArea.ExportAsFixedFormat Type:=xlTypePDF, filename:=fp, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True



End Sub

Этот код активируется при нажатии кнопки на листе.

Как только я нажимаю кнопку, я получаю окно сообщения с именем файлаи путь, по которому будет сохранен файл.

после нажатия на кнопку «ОК» я получил эту ошибку:

Ошибка времени выполнения «1004» Документ не сохранен.Возможно, документ открыт или произошла ошибка

Я использую Office 365

1 Ответ

0 голосов
/ 25 мая 2018

исправлено, кажется, что проблема была вызвана предоставлением каталога.

Кстати, я изменил reportsPath

reportsPath = ThisWorkbook.Path & "\Reports\"

И я добавил проверку, чтобы создать каталог в случае, если онне существует.

reportsPath = ThisWorkbook.Path & "\Reports\"
If Dir(reportsPath, vbDirectory) = "" Then
    create = MsgBox("The Directory " & reportsPath & " doesn't exist. ", vbOKCancel + vbQuestion, "Do you want to create it?")
    If create = vbCancel Then
        Exit Sub
    End If
    MkDir reportsPath

    Stop
End If

Теперь это работает, больше никаких ошибок во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...