• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:pdf印刷時に登録ファイル名の確認を無効化したい)

pdf印刷時に登録ファイル名の確認を無効化したい

このQ&Aのポイント
  • Excel 2010でPDFファイル化する際に、ファイル名の確認を無効にする方法について
  • Excelマクロを使用してPDFファイル化する際に、ファイル名の入力を省略する方法について
  • PDF印刷時にファイル名の確認をスキップする方法について

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

Pnameの値の変化を追ってゆけば (コード上で F9 、後は F8 でステップ実行)すぐに確認できたのに。 前略 'ファイル名17桁取得 ’Pname = Left(Fname, 17) 下記のループ内に移動 ' Do While Fname <> "" 'ファイル名17桁取得 Pname = Left(Fname, 17) 'ここへ移動しました If Fname <> ThisWorkbook.Name Then Workbooks.Open Fol & "\" & Fname For Each Ws In Worksheets ' Ws.PrintOut ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\test\" & Pname, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ False Next '下記指定をしないと登録フォルダのファイル先頭1つファイルしかpdf化されない ’Pname = Left(Fname, 17) これは不要 Workbooks(Fname).Close SaveChanges:=False 後略 ExportAsFixedFormat は既存同名ファイルがあっても 確認メッセージは出さずに上書きします。

3620313
質問者

お礼

ばっちりでした。ありがとうございます。 ”コード上で F9 、後は F8 でステップ実行”のあたりは、勉強します。

その他の回答 (4)

回答No.4

>登録ファイルが1つでも”名前をつけて保存”が表示されます。 なるほど、私の使わせてもらっているBullzip PDF Printer とは動作が異なるようですね。 せっかくなので自BookのワークシートをPDF出力するサンプルを載せときます。 少しは参考になるかと思います。 投稿用にタブインデントの代わりに全角スペースを代用しています。 フォルダ内全てとなるとパスワードありのファイルやAUTO_OPEN / WorkBook_Openも 考慮する必要もあるかもしれませんね。 Sub PDFout()   Dim i As Long   Dim SHs   Dim SHcurrent As Worksheet      If Application.Version < "12.0" Then     MsgBox "この機能はExcel2007以降でのみ使用出来ます"     Exit Sub   End If      Set SHcurrent = ActiveSheet   ReDim SHs(Worksheets.Count - 1)      '拡張子違いで同名ブックの対応未決定   For i = 1 To Worksheets.Count     'ワークシートごとに出力     If WorksheetFunction.CountA(Worksheets(i).Cells) <> 0 Then '空白シート除外       Worksheets(i).ExportAsFixedFormat Type:=xlTypePDF, _         FileName:=ThisWorkbook.Path & "\" _         & Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1) _         & "-" & Worksheets(i).Name & ".pdf", _         Quality:=xlQualityStandard, _         IncludeDocProperties:=True, _         IgnorePrintAreas:=False, _         OpenAfterPublish:=False     End If          '全ワークシートをまとめて一つのPDFにするために配列に格納     SHs(i - 1) = Worksheets(i).Name   Next   Worksheets(SHs).Select '空白シートは自動的に印刷出力対象にはならない様子   ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _     FileName:=ThisWorkbook.Path & "\" _     & Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1) _     & "(" & Worksheets.Count & ").pdf", _     Quality:=xlQualityStandard, _     IncludeDocProperties:=False, _     IgnorePrintAreas:=False, _     OpenAfterPublish:=False      SHcurrent.Select   Set SHcurrent = Nothing End Sub

3620313
質問者

お礼

ありがとうございます。

3620313
質問者

補足

大変参考になりました。 cutepdfへ印刷すると、名前を付けて保存が表示される仕様みたいなので、 cutepdfへの出力を廃止しました。 代わりに、教えていただいた参考マクロのActiveSheet.ExportAsFixedFormat Type で代用してみました。 下記test1のマクロで名前をつけて保存のポップアップは、聞かれなくなりました。 しかしながら、 *****************.xlsm.pdf の様に登録されるのがちょっと気になりました。 *はファイル名17桁です。 Sub test1() Application.DisplayAlerts = False Dim Fol As String Dim Fname As String Dim Ws As Worksheet Fol = "C:\test" Fname = Dir(Fol & "\*.xls*") Do While Fname <> "" If Fname <> ThisWorkbook.Name Then Workbooks.Open Fol & "\" & Fname For Each Ws In Worksheets 'cutepdfへの出力廃止 ' Ws.PrintOut 'pdfで保存 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\test\" & Fname, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ False Next Workbooks(Fname).Close SaveChanges:=False End If Fname = Dir() Loop End Sub なので、ちょっと変更してみました。 Sub test2() Application.DisplayAlerts = False Dim Fol As String Dim Fname As String Dim Pname As String Dim Ws As Worksheet Fol = "C:\test" Fname = Dir(Fol & "\*.xls*") 'ファイル名17桁取得 Pname = Left(Fname, 17) ' Do While Fname <> "" If Fname <> ThisWorkbook.Name Then Workbooks.Open Fol & "\" & Fname For Each Ws In Worksheets ' Ws.PrintOut ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\test\" & Pname, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _ False Next '下記指定をしないと登録フォルダのファイル先頭1つファイルしかpdf化されない Pname = Left(Fname, 17) Workbooks(Fname).Close SaveChanges:=False End If Fname = Dir() Loop End Sub test2のマクロで *****************.pdf というファイル名で保存される様になり、ほぼほぼやりたい内容は実現できたのですが、登録されているファイルの最後が保存できない状況です。 4つのxlsmファイルを登録していたら3つしかpdfができない。 test1のマクロは、4つのxlsmファイルで4つのpdfができます。 どこが悪いのか、分かりましたら、教えていただきたく。

回答No.3

ここで For Each Ws In Worksheets Ws.PrintOut Next としていますから拡張子を除いたブック名 & .pdf で保存されているわけです。 ワークシートが複数の場合に二番目以降は上書きの確認が出ているのでは? QutePDF Writer に既存ファイルがある場合は後ろに連結する・・・ような オプションでもない限り。 (QutePDF Writer は使ったことはありません。) Excel2007以降ならPDFでも保存できるようになったので QutePDF Writer 独自の機能が必要でなければ、そっちで・・・。 全てのExcelファイルを対象と考えているのなら Fname = Dir(Fol & "\*.xlsm") でマクロ有効ファイルだけを選択しているのも気になります。 "\*.xls*" では?

3620313
質問者

お礼

回答ありがとうございます。

3620313
質問者

補足

ワークシートが複数の場合に二番目以降は上書きの確認が出ているのでは? → 登録ファイルが1つでも”名前をつけて保存”が表示されます。 acrobat writerが入っているパソコンで印刷設定しても同じでした。 Excel2007以降ならPDFでも保存できるようになったので → 調べてみます。 Fname = Dir(Fol & "\*.xlsm") でマクロ有効ファイルだけを選択しているのも気になります。 "\*.xls*" では? → testフォルダに登録しているファイルの拡張子が全てxlsmだったのです。 特に意識していたわけではありません。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問の核心ではないですが、質問のコードが適当ですか? >ファイルを開いてpdfファイルを作成可能なのですが PDFファイウルで保存のコードは質問のコードにないのでは。  参考 「VBA エクセル pdfファイルで保存」でGoogleで照会してみたら その最初の http://excel.style-mods.net/tips_vba/tips_vba_8_11.htm など。 >cutepdfwriterを通常使うプリンタに設定しています。 参考 同じく cutepdfwriterで照会したら。 http://stackoverflow.com/questions/33101788/print-all-sheets-through-cutepdf-writer がある。 ーー >Fname <> ThisWorkbook.Name Then 開くファイル名が決まっているのに、なぜDir関数をDo-Loopで繰り回して探すのかわからなかった。

3620313
質問者

お礼

回答ありがとうございます

3620313
質問者

補足

PDFファイルで保存のコードは質問のコードにないのでは に対しては、 Ws.PrintOut の部分で印刷出力しています。 cutepdfwriterを通常のプリンタで指定しておくと、excelから印刷することでpdfファイルが作成できます。 excelで印刷=pdfで保存 という構成になります。 開くファイル名が決まっているのに、なぜDir関数をDo-Loopで繰り回して探すのかわからなかった。 → 1つのフォルダ内に登録したexcelファイルを全てpdfにしたいのです。 上記マクロはWEBに掲載されていたものをそのまま流用してます。

回答No.1

>方法は、ありますでしょうか? 質問者さんの方法は「印刷するとpdfファイルが作成される、仮想プリンタに印刷する」という方法で、pdf化しています。 システム的には「Excelの制御を離れ、プリンタ出力を行なっているだけ」なので、Excelの側から何らかの操作をする事は出来ません。 つまり「ファイル名をそのままでpdf化する事はできない」です。

3620313
質問者

お礼

回答ありがとうございます。

3620313
質問者

補足

Excelの側から何らかの操作をする事は出来ません。 だとすると、保存する名称が表示されるのは回避できないということですね。 なお、 「ファイル名をそのままでpdf化する事はできない」に関しては、違ってます。 cutepdfwriterで印刷すると、excelファイル名のxlsxより前の部分でpdfのファイル化されます。 test.xlsx を印刷すると test.pdf で保存と聞いてきます。 なので、ファイル名をそのままpdf化はできています。 1件1件保存の確認ポップアップがでなくなればというおもいです。 補足まで。

関連するQ&A