![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_05.png?e8efa67)
指定のフォルダに入っている全てのエクセルファイルをシートを指定して一つの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)」のチェックを外したところ、正常に保存することができるようになりました」
とあります。一度、手動で直してみてから、試したらどうなるでしょうか。
![「Excel VBA シートを指定してp」の回答画像2](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/f/1138040_57b9d71b098b9/M.jpg)
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBA PDFで保存するマクロで実行時エラー 1004
Visual Basic(VBA)
-
Excelマクロのエラーを解決したいです。
Visual Basic(VBA)
-
エラー1004 PDFの保存ができません。解決方法を教えてください。
Visual Basic(VBA)
-
-
4
マクロ、PDFを任意のフォルダへ保存
Excel(エクセル)
-
5
【VBA】PDF作成のコードでコンパイルエラーになってしまいます。
Excel(エクセル)
-
6
【Excel VBA】PDFを作成して,指定したフォルダに保存するコードについて
その他(Microsoft Office)
-
7
印刷ダイアログを表示させない方法
Visual Basic(VBA)
-
8
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
9
excel マクロ PDF化の際のエラーについて
Visual Basic(VBA)
-
10
フォルダ内のexcelファイルを順に開いて印刷して閉じるマクロを作りたいのでご教授お願いします。
Excel(エクセル)
-
11
【Excel】指定したセルの名前でPDFを保存する【VBA】
Visual Basic(VBA)
-
12
【VBA】PDF出力に任意のファイル名前を付ける方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】PDFを作成して,...
-
VBAでファイルパスが長すぎてコ...
-
ASPのファイルを他のサーバにコ...
-
BitBlt関数について
-
共有ファイルにあるマクロの同...
-
【python】pandasでExcel(...
-
フォルダ参照ではなくファイル...
-
XMLDOMのsaveメソッドのエラー
-
BASP21のアップロードについて
-
Vbscriptに詳しいかた...
-
Excelでdatファイルを作成??
-
複数のテキストファイルをexcel...
-
ダウンロード不可PDFファイルは...
-
拡張子が.txtのファイルに将来...
-
レーザープリンターのA4・5...
-
1フォルダに保存できるファイル...
-
オンラインストレージの検閲に...
-
LANDISKに新しいフォルダを追加...
-
VBScriptでファイル検索
-
フォルダ作成用バッチファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Microsoft Access エラー 3051
-
VBAでファイルパスが長すぎてコ...
-
Refreshで落ちる
-
エクセルVBA フォームを開く時...
-
【Excel VBA】PDFを作成して,...
-
FFFTPでサーバに新規フォルダが...
-
グーグルドライブからコピーし...
-
フォルダ参照ではなくファイル...
-
ExcelVBAで、隠しフォルダにあ...
-
ブラウザでASPファイルを開こう...
-
OCXのライセンス
-
Excel VBA シートを指定して...
-
BASP21のアップロードについて
-
VBSで指定したフォルダにファイ...
-
VBAでFTPファイル転送がうまく...
-
Lubuntuでフォントをインストー...
-
共有ファイルにあるマクロの同...
-
VB2005 で encoding="Shift_JIS...
-
ASP上でFileSystemObjectのDele...
-
【python】pandasでExcel(...
おすすめ情報