指定のフォルダに入っている全てのエクセルファイルをシートを指定して一つのpdfファイルに変換したいと考えています。全てのエクセルファイルにはSheet1~Sheet5まであり、Sheet1~Sheet4までをpdf化させたいのですが、なかなか上手くいきません。
どなたかご教授願えれば幸いです。試作したマクロコードは下記になります。よろしくお願いいたします。
Sub pdf()
'変換対象の.exlsファイルを保存したフォルダ
Const PATH = "E:\Exceclデータ\vba\"
'.xlsなどのファイルを検索
Dim file As String
file = Dir(PATH & "*.xlsx")
'すべての検索結果を取得するまでのループを継続
Do While file <> ""
Dim tmp_path As String
tmp_path = PATH & file
'ファイルを開いて、PDF形式でエクスポート
Workbooks.Open tmp_path
Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")).Select
Sheets("Sheet1").Activate
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=tmp_path & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
'現在のファイルを閉じる
ActiveWorkbook.Close
'次に合致するファイルを取得
file = Dir()
Loop
End Sub
No.2ベストアンサー
- 回答日時:
こんばんは。
#1の回答者です。
>「実行時エラー 1004
>ドキュメントを保存できませんでした。ドキュメントを開いているか、保存時にエラーが発生した可能性があります。」
なるほど、コードの問題ではありませんね。
office2010のPDF保存機能で 「ドキュメントが開いているかエラーが発生しています」 のエラーが発生する
http://answers.microsoft.com/ja-jp/office/forum/ …
「通常モードでPDFを保存オプションを開き「ISO19005-1に準拠(PDF/A)」のチェックを外したところ、正常に保存することができるようになりました」
とあります。一度、手動で直してみてから、試したらどうなるでしょうか。
No.1
- 回答日時:
コードを読みましたが、特に大きな問題はないようですが。
本当は、どこがうまく行かないのか書かれていたら、ピンポイントで解答ができたと思います。
>'すべての検索結果を取得するまでのループを継続
>Do While file <> ""
>Dim tmp_path As String '←VBAでは、ここには置かないです。
>tmp_path = PATH & file
別に問題があるわけではないのです。ただ、気になるだけです。
>Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4")).Select
ここは確かですか? シート名がそのようになっていればよいのですが、
以下のようにインデックスで指定する方法もあります。インデックスは、左から1,2,3と数えていきます。
以下の場合は、シート名が違っている場合、シートの数が4つがない場合と4つより多い場合に対処できます。
もうひとつ心配のたねは、1ページがうまく収まっていればよいのですが、右にはみ出たりしてしまっていると、PDFの中身が汚くなってしまいます。
それと、PATHは、生の名称でなくて、mPATHにしました。
プロパティ名で使われていると、ややこしいことになることもありますから。m は、myの m +PATH
'//
tmp_path = mPATH & File
With Workbooks.Open(tmp_path)
For i = 1 To .Worksheets.Count
.Worksheets(1).Select (False)
If i >= 4 Then Exit For '4つまでで離脱
Next i
Worksheets(1).Activate
'-- pdf-- 処理
.Close False '再計算などで変化があっても、保存を聞いてこないようにする
End With
tmp_path = "" 'ここでクリア
'次に合致するファイルを取得
File = Dir()
Loop
'//
最後に、画面の切り替わりがうっとうしいですね。
Application.ScreenUpdating = False
Application.ScreenUpdating = True
で、Loop の所を挟んだほうがよいです。
このアドバイスでダメでしたら、こちらのサンプルコードをアップロードします。
ご回答ありがとうございます。いただいたVBAを試してみましたがやはり上手く作動しないようです…
また自分のVBAに出ていた症状としては、数個のpdf化は上手くいくのですが途中で下記のメッセージが出て変換が終わってしまうというものです。ちなみにドキュメントは開いていませんでした。
「実行時エラー 1004
ドキュメントを保存できませんでした。ドキュメントを開いているか、保存時にエラーが発生した可能性があります。」
デバックすると↓に問題があるようです…
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=tmp_path & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- Excel(エクセル) エクセル2019でPDFファイル名に枝番号をつけたい。 アクティブワークシートを印刷した後の処理とし 4 2023/06/06 21:00
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
このQ&Aを見た人はこんなQ&Aも見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
VBA PDFで保存するマクロで実行時エラー 1004
Visual Basic(VBA)
-
エラー1004 PDFの保存ができません。解決方法を教えてください。
Visual Basic(VBA)
-
Excelマクロのエラーを解決したいです。
Visual Basic(VBA)
-
-
4
マクロ、PDFを任意のフォルダへ保存
Excel(エクセル)
-
5
excel マクロ PDF化の際のエラーについて
Visual Basic(VBA)
-
6
エクセルをPDFで保存し、ファイル名はA1セルを参照するVBAの記述を教えてください。
Excel(エクセル)
-
7
【Excel】指定したセルの名前でPDFを保存する【VBA】
Visual Basic(VBA)
-
8
【VBA】PDF作成のコードでコンパイルエラーになってしまいます。
Excel(エクセル)
-
9
Excelに埋め込んだVBAのプログラムが消えた。
その他(Microsoft Office)
-
10
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
11
Excelで「同じ名前のファイルが既に開いています」
Excel(エクセル)
-
12
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
13
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
14
VBA ポップアップが表示されたら常に「はい」を選択したい
Access(アクセス)
-
15
VBA 数式を残して値をクリアについて
Excel(エクセル)
-
16
Excel VBA シート名変更時、重複していたら連番を付けたい
その他(Microsoft Office)
-
17
EXCELのVBA-フィルタ抽出後のセル選択方法
Visual Basic(VBA)
-
18
★Excelファイルの指定したシートを、一括PDF化するマクロが組めない★
Visual Basic(VBA)
-
19
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
20
マクロ実行後に別シートの残像が残り、オブジェクトが見えなくなる
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Refreshで落ちる
-
Lubuntuでフォントをインストー...
-
VBAでファイルパスが長すぎてコ...
-
グーグルドライブからコピーし...
-
Response.BinaryReadエラー(Win...
-
OpenOfficeの書式エラーの質問...
-
エクセルVBA フォームを開く時...
-
OCXのライセンス
-
複数のテキストファイルをexcel...
-
バッチファイルが作成できない
-
Access2003で「オブジェクト'○○...
-
ExcelVBA テキストファイルから...
-
HTMLタグのあるCSVファイルを利...
-
文字の頭文字順に自動移動
-
htmlとして保存されているファ...
-
フォルダ作成用バッチファイル...
-
Excel-VBA 撮影日時の取得
-
マルチモニタ環境でネットから...
-
コンピューターで、ファイルが...
-
エクセルVBAについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでファイルパスが長すぎてコ...
-
Microsoft Access エラー 3051
-
Lubuntuでフォントをインストー...
-
【Excel VBA】PDFを作成して,...
-
Refreshで落ちる
-
ExcelVBAで、隠しフォルダにあ...
-
Excel VBA シートを指定して...
-
FFFTPでサーバに新規フォルダが...
-
VBAでFTPファイル転送がうまく...
-
フォルダ参照ではなくファイル...
-
エクセルVBA フォームを開く時...
-
グーグルドライブからコピーし...
-
OCXのライセンス
-
ファイルが別のPCで開けない
-
ASP上でFileSystemObjectのDele...
-
ASP.NETで、別サーバーへファイ...
-
VBSで指定したフォルダにファイ...
-
BASP21のアップロードについて
-
【python】pandasでExcel(...
-
vba エクセルダウンロードファ...
おすすめ情報