• ベストアンサー

エクセルのデータをまとめて印刷

一つのフォルダの中に複数のエクセルのデータがあります。さらにその一つ一つに複数のシートがあります。 このフォルダ下のエクセルデータ(全てのシート)を一括印刷したい場合どうすればいいのでしょうか? 色々調べたらそのフォルダのウィンドウの開いて、印刷したいエクセルのデータを選択して「ファイル」⇒「印刷」とすれば複数のエクセルデータを印刷できるのは分かっています。 けれど、このやり方だと全シートは無理ですよね? 何か良い方法を教えてください。 よろしくお願いします。

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

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

Sub PrintAll() Const xDefaultPath = "d:\tmp\" Const xFileSelector = "*.xls*" Dim xFolderSelect As Variant Dim xFolder As Variant Dim xFileName As Variant Dim xSheet As Worksheet Dim xNoData As Boolean Dim objShell As Variant Dim kk As Long Dim nn As Long Dim xLast As Long Application.ScreenUpdating = False Application.DisplayAlerts = False ThisWorkbook.Worksheets(1).UsedRange.Clear ThisWorkbook.Worksheets(1).Cells(1, "A") = "ブック名" ThisWorkbook.Worksheets(1).Cells(1, "B") = "シート名" xNoData = True Set objShell = CreateObject("Shell.Application") Set xFolderSelect = objShell.BrowseForFolder(&O0, "処理対象フォルダを選択, Please!!", &H1 + &H10, xDefaultPath) If xFolderSelect Is Nothing Then Exit Sub ' MsgBox xFolderSelect.Files.Count & "個のファイルがあります", vbInformation xFolder = xFolderSelect.Items.Item.Path & "\" '先頭のファイル名の取得 xFileName = Dir(xFolder & xFileSelector, vbNormal) nn = 2 Do Until xFileName = Empty Workbooks.Open xFolder & xFileName kk = 0 For Each xSheet In Worksheets 'シートを印刷(印刷ボタンを押す) xSheet.PrintOut ThisWorkbook.Worksheets(1).Cells(nn, "A") = xFileName ThisWorkbook.Worksheets(1).Cells(nn, "B").Offset(0, kk) = xSheet.Name ThisWorkbook.Worksheets(1).Cells(nn + 1, "B").Offset(0, kk) = xSheet.Cells(1, "A") xLast = xSheet.Cells(xSheet.Rows.Count, "A").End(xlUp).Row ThisWorkbook.Worksheets(1).Cells(nn + 2, "B").Offset(0, kk) = xLast kk = kk + 1 Next xNoData = False MsgBox "ファイル:" & ActiveWorkbook.Name & "(シート:" & kk & ")", vbInformation nn = nn + 3 Workbooks(xFileName).Close False NextFile: xFileName = Dir() Loop If xNoData = True Then MsgBox ("No Data Found!!") End If Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

rie78
質問者

お礼

丁寧にプログラムまで書いていただき本当にありがとうございました。

その他の回答 (1)

  • koko88okok
  • ベストアンサー率58% (3839/6543)
回答No.1

下記URLの過去ログがご参考になりそうです。 「フォルダ内のエクセル文書をすべて印刷したいデス」 http://okwave.jp/qa/q1517036.html

rie78
質問者

お礼

回答ありがとうございました。 フリーのソフトを使用してなんとかなりました。