【最大10000ポイント】当たる!!質問投稿キャンペーン!

閲覧ありがとうございます。

標題につきまして質問です。

マクロを用いて、複数シート(保存時任意で指定)を1つのファイルとして、PDFで固定のフォルダに保存したいのですが、コードはどのようにすればよいでしょうか。

PDFファイル名は都度変更したく、固定のセルにCONCATENATE数式を入力し、そのセルから取得する形としたいのですが。。

当方マクロ初心者ですので、恐れ入りますが具体的なコードを教えて頂けますと助かります。

Excelのバージョンは2010となっております。

宜しくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

No.1のそのままだと"シート1"と"シート2"に固定されます



Sheets(Array("シート1", "シート2")).Select
この部分を削除して、都度選択した状態でマクロを起動する事が良いかと思いますが、
そうなるとNo.2の方が示されている方法が実務としては単純な解決法となります
    • good
    • 0

直接の回答ではありませんが、もっと簡単なやり方がExcelの機能としてあります。


バージョンは2010、シートを指定したい、ということですので、以下の手順になります。

【手順】
エクセルファイルを開く
PDFにしたいシートを選択(複数可)
[ファイル]タブの[保存と送信] → [PDF/XPSドキュメントの作成] → [PDF/XPSの作成]を実行(添付図参照)
フォルダ、ファイル名を指定して発行ボタンを押して保存
「(Excel)マクロで複数シートをPDF」の回答画像2
    • good
    • 0

こんにちは。


やり方としては、自動記録を使えば構文は簡単にわかります。
シートを複数選択した状態で「名前を付けて保存」から ファイルの種類 → PDF を選び保存をします。

下記の構文はデスクトップに保存するやり方です。

Sub PDFファイルデスクトップ保存()
Dim Path As String, WSH As Variant

Set WSH = CreateObject("Wscript.Shell")
Path = WSH.SpecialFolders("Desktop") & "\"

Sheets(Array("シート1", "シート2")).Select

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
Path & "PDFファイル保存" & Range("A1").Value & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

下記の構文はDドライブに保存するやり方です。
Sub PDFファイルDドライブ保存()

Sheets(Array("シート1", "シート2")).Select

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"D:\" & "PDFファイル保存" & Range("A1").Value & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub


固定セルの部分は Range("A1"). で設定してください。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBAでPDFを保存する

Excel2013です。VBAでPDFで保存するコードを書きたいのですが、通常の名前をつけて保存のように保存先とファイル名をその都度変更できるウィンドウを出したいのですが、どのようにすればいいのでしょうか?保存先とファイル名をあらかじめ指定する方法はネット検索でヒットするのですが、そうでない方法が探せません。

以下は現在のコードです。
Sub PDF保存()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"c:\\xxx.pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub

Aベストアンサー

GetSaveAsFilenameメソッドでできるでしょう。


ファイル指定ダイアログの表示
http://www.officepro.jp/excelvba/book_new/index10.html

QExcel VBA  シートを指定してpdf化

指定のフォルダに入っている全てのエクセルファイルをシートを指定して一つの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

指定のフォルダに入っている全てのエクセルファイルをシートを指定して一つのpdfファイルに変換したいと考えています。全てのエクセルファイルにはSheet1~Sheet5まであり、Sheet1~Sheet4までをpdf化させたいのですが、なかなか上手くいきません。

どなたかご教授願えれば幸いです。試作したマクロコードは下記になります。よろしくお願いいたします。

Sub pdf()
'変換対象の.exlsファイルを保存したフォルダ
Const PATH = "E:\Exceclデータ\vba\"

'.xlsなどのファイルを検索
Dim file As String
fi...続きを読む

Aベストアンサー

こんばんは。

#1の回答者です。

>「実行時エラー 1004
>ドキュメントを保存できませんでした。ドキュメントを開いているか、保存時にエラーが発生した可能性があります。」

なるほど、コードの問題ではありませんね。

office2010のPDF保存機能で 「ドキュメントが開いているかエラーが発生しています」 のエラーが発生する
http://answers.microsoft.com/ja-jp/office/forum/office_2010-excel/office2010%E3%81%AEpdf%E4%BF%9D%E5%AD%98%E6%A9%9F/6bc9dd64-d6ec-490f-9165-60bb3205326e

「通常モードでPDFを保存オプションを開き「ISO19005-1に準拠(PDF/A)」のチェックを外したところ、正常に保存することができるようになりました」
とあります。一度、手動で直してみてから、試したらどうなるでしょうか。

Qエクセルの複数シートをまとめてPDFへ変換したいです。

エクセルの複数シートをまとめてPDFへ変換したいです。

Adobe Acrobatは4.0と5.0が入っています。

対象シートをすべて選択して[作業グループ]にしてから「Adobe PDFへの変換」をしても、
先頭ページしか変換されません。

『PrimoPDF』というのをダウンロードしてみたのですが、複数シートを選択して変換(印刷)しても、
1ページごとに保存場所を聞いてきて、つなげてくれません。

『Acrobat Distiller』で作業をしても同様です。
(たまに3ページ目と4ページ目だけつながっている、という場合があります)

設定が違うといっぺんに変換できないようだったので、
「ページ設定」はすべて一緒にしました。
(縮小%は違いますが、「拡大縮小印刷」で[横1×縦1ページに印刷]にしてあります)

なにか設定ミスがあるのでしょうか。

無料でまとめて変換できる方法がありましたら教えて頂きたく、よろしくお願い致します。

Aベストアンサー

こんにちは

> 「ページ設定」はすべて一緒にしました。
「印刷品質」は全てのページで合わせてありますか?
サイズより、こちらを合わせるのがポイントです。

ページ毎に印刷のJobが切れてしまうことが原因だと
思いますので、設定を合わせるだけだと思いますが。
(ちなみにA3,A4混在でも1つのPDFにできます)

他の方法としては、1つの「ps」ファイルで作成してしまい
それからPDFにする方法もあります。

なおPrimoPDFでは、「オプション」でPDFファイルが存在する時に
「ファイルに追加」にして置くと、ファイル名を聞かれても
同じ名前でどんどん追加することで作業を楽にすることは
できます。(根本的な解決では無いですが)

QVBA  PDF ファイル名をセルからつける

ExcelでPDFを出力するときに、たとえばB1のセルに入力されているものを、ファイル名の一部として出力する方法がわかりません。

例えばB1に「資料1」と入力されていた場合で、PDFのファイル名を[TEST資料1.pdf]にしたい場合、下記に何かを足すだけでできますでしょうか?

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"I:\補TEST\TEST.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub

できれば、解説もいただけると助かります。よろしくお願いします。

Aベストアンサー

一例です。
文字列の結合ですから解説は不要ですよね。

"I:\補TEST\TEST" & Range("B1") & ".pdf", Quality:=xlQualityStandard, _

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Qエクセルのマクロでの保存先指定方法を教えて

エクセルのマクロを使用して作業したいと思っています。
印刷画面をpdfにして出力しようと思っております
ただし、ここで使用しております エクセルデータは usbで使用しており
pcによりドライブが変わってしまう
このusbに pdfデータを出力したいのですができますでしょうか
pdf変換しておくとプリンタなくても コンビニ印刷できるもので・・・

詳しい方 お教えください
宜しくお願い致します

Aベストアンサー

スミマセン,随分間の空いたレスポンスでしたので,こちらも見落としていました。


>ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"I:\H23年度\マレットゴルフ 成績表.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True

ようやっと,ご利用のエクセルのバージョンを含めてそもそもどうやってPDFを保存しているのかの情報が出てきましたね。
この流れで行うなら

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=thisworkbook.path & "\マレットゴルフ 成績表.pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True

といった具合になります。
ドライブレターだけ参照して全く違うフォルダに保存したい場合は,前述回答を参考にちょい直してください。

スミマセン,随分間の空いたレスポンスでしたので,こちらも見落としていました。


>ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"I:\H23年度\マレットゴルフ 成績表.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True

ようやっと,ご利用のエクセルのバージョンを含めてそもそもどうやってPDFを保存しているのかの情報が出てきましたね。
この流れで行うなら

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
F...続きを読む

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング