Ошибка VBA: «Ошибка компиляции: Ожидаемый конец Sub» - PullRequest
2 голосов
/ 17 декабря 2010

Попытка передать «GetFullNamePDF ()» атрибуту «Имя файла», но при этом появляется следующая ошибка: «Ошибка компиляции: ожидается конец подпрограммы»

Sub PrintPDF()

    Function GetFullNamePDF() As String
        GetFullNameCSV = Replace(ThisWorkbook.FullName, ".xlsm", ".pdf")
    End Function

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "GetFullNamePDF()", Quality:=xlQualityStandard, IncludeDocProperties _
        :=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

End Sub

Я ничего не знаю о VBA и получил приведенный выше код из вопроса, который я задал вчера , но не смог протестировать в то время. Предположение об ошибке связано с функцией, поскольку код работает без добавления функции и жестко запрограммирован путь к файлу / имя.

Идея кода в том, чтобы динамически использовать собственное имя файла для указания пути и файла для PDF. Если у вас есть какие-либо вопросы, просто прокомментируйте - спасибо!

Ответы [ 3 ]

6 голосов
/ 17 декабря 2010

Вы не можете вложить функцию в процедуру. Вам нужно переместить его выше:

Function GetFullNamePDF() As String
    GetFullNameCSV = Replace(ThisWorkbook.FullName, ".xlsm", ".pdf")
    'This should be
    GetFullNamePDF = Replace(ThisWorkbook.FullName, ".xlsm", ".pdf")
End Function

Sub PrintPDF()

     'Remove the quotes from GetFullNamePDF
     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        GetFullNamePDF(), Quality:=xlQualityStandard, IncludeDocProperties _
        :=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

End Sub
1 голос
/ 17 декабря 2010

Как это:

Function GetFullNamePDF() As String
    GetFullNamePDF = Replace(ThisWorkbook.FullName, ".xlsm", ".pdf")
End Function

Sub PrintPDF()
    Dim sFileName As Variable

    sFileName=GetFullNamePDF()

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        sFilename, Quality:=xlQualityStandard, IncludeDocProperties _
        :=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

End Sub
1 голос
/ 17 декабря 2010

Недопустимо объявлять функцию в подпрограмме.Это должно выглядеть так:

Function GetFullNamePDF() As String 
    GetFullNamePDF = Replace(ThisWorkbook.FullName, ".xlsm", ".pdf") 
End Function 


Sub PrintPDF() 
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
        "GetFullNamePDF()", Quality:=xlQualityStandard, IncludeDocProperties _ 
        :=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 
End Sub 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...