【Excel VBA】PDFでエクスポートしようとしたら実行エラー’-2147024773(8007007b)’が出てくる

◇コード

Sub ExportPDF()

Dim folderPath As Variant

Dim Filename As Variant

Dim Savename As Variant

Savename = Workbooks("〇〇.xlsm").Worksheets("マクロ").Range("D2")

    With Application.FileDialog(msoFileDialogFolderPicker)

    .Show

    folderPath = .SelectedItems( 1 )

    End With

  ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _

  Filename:=folderPath & "\" & Left(Savename, Len(Savename) - 5) & ".pdf", OpenAfterPublish:=True     Msgbox "出力完了" End Sub

◇エラーコード

実行エラー’-2147024773(8007007b)’

ファイルを保存できませんでした。

◇デバッグをした際に選択されたステートメント

  ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _

  Filename:=folderPath & "\" & Left(Savename, Len(Savename) - 5) & ".pdf", OpenAfterPublish:=True

◇やりたいこと

ダイアログで指定したフォルダに指定セル内のファイル名でPDFとして保存したい

◇詳細

マクロ処理をかけたExcelファイルをPDFでエクスポートするマクロを作っています。

今までは「Savename」を「ThisWorkbook.Path」で指定しており、実行も問題ありませんでした。しかし、今後は名前もExcelファイル名と同じにしたいと思い、上記のコードを書いた次第です。

全体のマクロの流れとしては、

【マクロ実行用ファイル】

マクロ呼び出し用マクロでマクロ処理をかけたいファイルを指定(ブック内マクロ)

※この時に対象ファイルのパスを同ブック内のセルに記録している。

【個人用マクロブック】

個人用マクロブックに入れてあるマクロで対象ファイルを処理(別ブックのマクロの呼び出し)

対象ファイルをPDFでエクスポート(個人用マクロブック内のマクロ使用)

ダイアログを用いて任意のフォルダに出力できるようにしている。

といった感じです。

VBAの公式サポート場所は海外となっています。

 

VBA(マクロ)に関しては、海外コミュニティで聞いて下さい。

Stack Overflow(VBA)

  [VBA プログラミングに関する質問]

  Stack Overflow には、説明的なタイトル、完全で簡潔な問題ステートメント、問題を再現する
  ための十分な詳細の要求などのガイドラインがあることに注意してください。
  機能要求または過度に広範な質問は、トピック外と見なされます。
  新しいユーザーの場合は、Stack Overflow ヘルプ センター にアクセスして詳細を確認して下さい。

※ 閲覧者・回答者が多い公式サポートサイトをお勧めします。

  英語で質問を送信してください。

この回答が役に立ちましたか?

お役に立てず、申し訳ございません。

素晴らしい! フィードバックをありがとうございました。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。おかげで、サイトの改善に役立ちます。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。

> 実行エラー’-2147024773(8007007b)’
> ファイルを保存できませんでした。

> ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
> Filename:=folderPath & "\" & Left(Savename, Len(Savename) - 5) & ".pdf", OpenAfterPublish:=True


例えば、引数 Filename に渡されたパスと同名の PDF ファイルが既に存在し、
その PDF ファイルが別のアプリケーション( Acrobat や Edge など)によって
開かれている状態で上記のステートメントを実行しようとすれば
当然そうなりますが。

> Savename = Workbooks("〇〇.xlsm").Worksheets("マクロ").Range("D2")

もしくは、Windows のファイル名として使用できない文字が
変数 Savename の値に含まれているか。

この回答が役に立ちましたか?

お役に立てず、申し訳ございません。

素晴らしい! フィードバックをありがとうございました。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。おかげで、サイトの改善に役立ちます。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。

Windows error 0x8007007B, -2147024773: INVALID_NAME (linestarve.com)

The filename, directory name, or volume label syntax is incorrect.”

保存しようとしているファイル名が不正です。

>Filename:=folderPath & "\" & Left(Savename, Len(Savename) - 5) & ".pdf"

ここで Filename に実際にどのような文字列が入るのかデバッグしてみてください。

この回答が役に立ちましたか?

お役に立てず、申し訳ございません。

素晴らしい! フィードバックをありがとうございました。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。おかげで、サイトの改善に役立ちます。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。

 
 

質問情報


最終更新日: 2024年4月24日 表示数 1,196 適用先: