- 締切済み
マクロの動作不良
エクセルに下のようなボタンマクロを設定しています。 内容は、inpシートに設定している開始番号と終了番号を入力するとその番号分だけreceptシートのでーたを入れ替えてPDFで吐き出すというコードです。 問題なく動いていたのですが、先日、PCを入れ替えた際に確認したところ、pdfが出力されなくなりました。特にエラーはでることなく完了するのですがファイルができません。 変な質問ですが、原因がつかめず困っております。 このエクセルファイルは旧PCでも、新PCでもSDカードに保存して使用しております。 宜しくお願い致します。 Sub ボタン6_Click() Dim s As Long Dim e As Long Dim i As Long Dim outputFilePath As String Dim outputFileName As String On Error Resume Next s = InputBox("開始No.を入力して下さい。") If s = 0 Then Exit Sub e = InputBox("終了No.を入力して下さい。") If e = 0 Then Exit Sub ' PDFの保存先フォルダを指定する outputFilePath = Environ("USERPROFILE") & "\Desktop\" For i = s To e ' 出力するファイル名を指定する outputFileName = "recept_" & i & ".pdf" ' 対象の番号を設定する Worksheets("Inp").Range("C1").Value = i ' PDF出力を行う With Worksheets("Recept").Range("A36:J74") .ExportAsFixedFormat Type:=xlTypePDF, _ fileName:=outputFilePath & outputFileName, _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False End With ' 作成したファイル名を表示する MsgBox "PDFファイルを作成しました: " & outputFilePath & outputFileName Next i End Sub
- みんなの回答 (10)
- 専門家の回答
みんなの回答
- kkkkkm
- ベストアンサー率66% (1721/2591)
回答No.9の追加です。 デスクトップのパス (現状ログインしているユーザー「過去の結果ではなくUSERPROFILEでのDesktopをその時点で確認して」で見てください。複数ユーザーの場合、USERPROFILEは外せないと思います) が両方とも同じでしたら コードの .ExportAsFixedFormat Type:=xlTypePDF, _ fileName:=outputFilePath & outputFileName, _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False の以下の部分 Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False をはずして .ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=outputFilePath & outputFileName だけにして試してみてみるとか PDFではなく単にエクセルファイルをそのまま保存して試してみるとかで、保存自体に問題があるかどうか確認したり、デスクトップにファイルが保存できるかどうかも確認してみてもいいかもしれません。
- kkkkkm
- ベストアンサー率66% (1721/2591)
- HohoPapa
- ベストアンサー率65% (455/693)
Environ("UserProfile") この戻り値が、 実行しているユーザのユーザプロファイルのフォルダーではないということのように思います。 この仮説が正しいなら、私だったら Environ("UserProfile") を使わず、 "c:\Users\toiiz\Desktop" を使います。 つまり、 outputFilePath = Environ("USERPROFILE") & "\Desktop\" を outputFilePath = "c:\Users\toiiz\Desktop" に書き換えます。 ユーザプロファイルにこだわるなら https://www.ubackup.com/jp/windows-10/backup-user-profile-windows-10.html といったサイトを参考に、ユーザプロファイルを引っ越す、 あるいは、新たなアカウントを用意し 必要なデータたちを複写します。
- NuboChan
- ベストアンサー率47% (785/1650)
すいません。 ミス書き込み、以下のように訂正(加筆)します。 以下から考えて outputFilePath = Environ("USERPROFILE") & "\Desktop\" outputFileName = "recept_" & i & ".pdf" c:\Users\toiiz\Desktop が存在しているのであれば C:\Users\toiiz\Desktop\recept_1.pdf として出力されるはずですが C:¥users¥to¥desktoprecept_1.pdf に現在出力されているのは理解できません。
- NuboChan
- ベストアンサー率47% (785/1650)
c:\Users\toiiz\Desktop が存在しているのであれば c:\Users\toiiz\Desktop\desktoprecept_1.pdfとして出力されるはずですが C:¥users¥to¥desktoprecept_1.pdf に現在出力されているのは理解できません。
- NuboChan
- ベストアンサー率47% (785/1650)
>環境変数というのはOSバージョンごとに異なるのでしょうか。 win11でもWin10と仕様は変わらないはずです。 >uses直下のフォルダ(C:¥users¥to¥)に”desktoprecept_1.pdfとして出力されました。 デスクトップディレクトリーがおかしくないですか? (デスクトップのフルパスは想定の名前か、確認が必要です) とりあえず、下記ののコードを追加すると どのように表示されますか ? MsgBox "ユーザー名は" & vbLf & Environ("USERNAME") MsgBox "デスクトップのパスは" & vbLf & Environ("UserProfile") & "\Desktop"
- HohoPapa
- ベストアンサー率65% (455/693)
- imogasi
- ベストアンサー率27% (4737/17069)
アウトプット先がDesktop\"となっているので、デスクトップにPDFファイルが作成されているかどうか 確認して、質問に書くべきでは。 >PCを入れ替えた際に、が原因で従来なら行われる場所と、今回のファイルの場所が違ってしまい、影響が出ていないのか。 デスクトップに今回の処理でそれらしきファイが出来て居れば、そのファイルが印刷されないことの 原因究明に移るべきでしょう。 PDFファイルという、エクセルのバージョンの進化との関係で、Adobe社との関連で、色々事情があった箇所と関連していると思うが、プリンタ―ドライバーとか、PDFフォーマット作製のソフトのインストールの必要性は余りWEBなどでも説明されていない。 Googleなどで「エクセル pdfファイル 印刷できない」でWEB照会し、該当しそうな記事を読んでやってみてはどうか。
- HohoPapa
- ベストアンサー率65% (455/693)
私の環境で行ってみる限り、デスクトップにPDFファイルが作成されます。 コードの実行途中で何やらエラーが起きているものと思いますが、 On Error Resume Next このコードがあるため、発生している(と思われる)ものの、 無視されています。 このコードをコメントアウトすることで エラーの発生を炙り出せるものと思います。
補足
ご回答ありがとうございました。 コメントアウトしますと、PDF生成のコードが黄色く反転しました。しかし、どうも他の方が指摘くださったように新PCのパスの変数?のようです。
- NuboChan
- ベストアンサー率47% (785/1650)
Environ("UserProfile") & "\Desktop" 環境変数を確認してみてください。 イミディエイト ウィンドウでDebug.printして正常でしょうか ?
補足
ご回答をまことにありがとうございます。 Environ("UserProfile") & "\Desktop\"をEnviron("UserProfile") & "\Desktop"に直したところ、uses直下のフォルダ(C:¥users¥to¥)に”desktoprecept_1.pdfとして出力されました。 ご案内の環境変数は確認してみたのですが、正直よくわかりません。WINDOWS10で使用していましたが、PC移行で11になりました。環境変数というのはOSバージョンごとに異なるのでしょうか。
補足
引き続き、ご回答ありがとうございます。 コードを追加実行すると、ユーザ名はtoiiz、デスクトップのパスは、c:\Users\toiiz\Desktopとなりました。宜しくお願い致します。