1. ホーム
  2. excel

[解決済み] VBAのエラーです。"コンパイルエラーです。期待される End Sub"

2022-02-11 14:22:07

質問

Filename属性に"GetFullNamePDF()"を渡そうとしていますが、以下のエラーが発生します: "コンパイルエラーです。Expected End Sub"

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のパスとファイルの名前に、それ自身のファイル名を動的に使用することです。もし何か質問があれば、コメントください。

どのように解決するのですか?

プロシージャの中に関数を入れ子にすることはできません。上に移動させる必要があります。

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