Excel 2007の印刷マクロについて御教示ください。
<実行したいこと>
○ 数百に及ぶエクセルファイル(すべて単一シートからなる同一セル構成)を、逐一個別のファイルを開いて印刷するのではなく、一度だけエクセルをロードして一挙にこれらを印刷したい。
<環境・条件>
・印刷したいファイル名称は、D:\FILENAMES.TXTに、1ファイル一行単位で記録されている。
D:\DATA\01A001.XLS
D:\DATA\01A002.XLS
D:\DATA\02A010.XLS
…
・印刷の順序は、D:\FILENAMES.TXTに書き込まれているとおりとする。
・各エクセルファイルは、すべて単一シートの構成である。
・使用するエクセルは2007、OSはWinXP
※ エクスプローラで印刷したいエクセルファイル名を名称の上昇順に表示させ、これらを一括して範囲指定し右クリックして印刷を指定すると印刷はできますが、印刷の順序が必ずしも上昇順ではなくなってしまい、私の場合この機能は使えません。エクセルのマクロで処理するのが適当なのではないかと考えていますが、エクセルのマクロは使ったことがありません。よろしくお願いします。
No.3ベストアンサー
- 回答日時:
こんにちは。
>エクセルのマクロは使ったことがありません。
VB系のプログラミングの経験はあるのでしょうか?もし、ご存知ないようでしたら、どこかのサイトで、設定の仕方とか調べてください。生のコードを扱うには、基本的な知識が必要です。
また。この手のマクロというのは、PCの周辺状況の見えない部分があるので、実際には100個のファイルをきちんと処理できるか分かりません。いきなり実行せずに、プレビューやファイル数を減らし、試験的にやってみて、行けると思ったら、本格的にマクロを実行してください。
一応、プリンタのオプションとして、Wait を入れてみました。Wait は、印刷には直接関係ありませんが、マクロは一旦中断されます。印刷の命令が速過ぎて、印刷が遅い場合、プリンタ・バッファに溜まりすぎてしまうのを、防ぐためのものです。
Application.Wait Now + TimeSerial(0, 0, 3) '3秒 ←この部分で、一つのファイルを印刷する平均的な時間を入れてあげると、PCの負担が少なくてすみます。
プリンタの性能にもよりますが、出来れば、100個のファイルを一気に印刷せずに、30個ぐらいに分散したほうが安全です。
'-------------------------------------------
Sub TestMacro1()
Dim fName As String
Dim fNo As Integer
Dim TextLine As String
Dim ArFNames() As String
Dim i As Long, j As Long
Dim fn As Variant
''-------------------------------------------
fName = Application.GetOpenFilename("テキストファイル(*.txt),*.txt")
If VarType(fName) = vbBoolean Then Exit Sub
''-------------------------------------------
'fName = "D:\FILENAMES.TXT" '固定ファイルなら上の2行は不要
fNo = FreeFile()
Open fName For Input As #fNo
Do While Not EOF(fNo)
Line Input #fNo, TextLine
If Len(TextLine) > 2 Then
ReDim Preserve ArFNames(i)
ArFNames(i) = Trim(TextLine)
i = i + 1
End If
Loop
Close #fNo
'印刷
Application.Calculation = xlCalculationManual
On Error Resume Next
For Each fn In ArFNames
If Dir(fn) <> "" Then
With Workbooks.Open(fn)
If Err.Number = 0 Then
'プレビューを入れる場合、「'」を外す
.ActiveSheet.PrintOut 'Preview:=True
j = j + 1
.Close False
''プリンタの性能によって、ウェイトを3秒入れる
''ウェイトを入れる場合は「'」を外す
'Application.Wait Now + TimeSerial(0, 0, 3)
Err.Clear
End If
End With
End If
Next fn
On Error GoTo 0
Application.Calculation = xlCalculationAutomatic
MsgBox j & " 個のファイルを処理しました。", vbInformation
End Sub
詳細なアドバイス、ありがとうございました。
すったもんだした挙げ句、諸般の事情によりこの処理は沙汰やみとなりました。
なお、マクロは参考とさせていただきます。
お礼が遅れて申し訳ありません。重ね重ねありがとうございました。
No.2
- 回答日時:
D:\FILENAMES.TXTを1行読んでは印刷の方法もあるが、先に一旦、
D:\FILENAMES.TXT全行をエクセルブックのSheet1に読み込む(操作で読み込めるでしょう)
するとD:\FILENAMES.TXTは、用は無くなり、エクセル側に集中できる。
そのブックの標準モジュールに、この質問の印刷するVBAコードをつくり、それを行数分繰り返して印刷。
開くブック名は上記エクセルに読み込んだシートの行のA列のセルの値を使う。
最終行まで繰り返す(最終行を捕まえるコードはわかりますよね)
各ブックのシートは1シートしかないということなので、全ブックブック名.Worksheets(1).PrintOutでよかろう。シートの印刷範囲指定する必要があるかどうか、最初のブックでテスト敵に確認。
印刷後読み込んだブックはClose。
今回1回だけなら、数百ブックを1回に印刷印刷し、用紙が出終わった事を確認後、順次印刷したほうが、印刷トラブルなどに柔軟に対処できるのでは。
まづ2ブックぐらいでテストして、ブック数を増やすのがコツだろう。For i=1 to 2で2行だけ対象に出来る。
ーー
以上だが、何も難しい点は見つからない。
質問しているということは、何処が判らないのか絞らないと。現状では丸投げである。
No.1
- 回答日時:
Sub 連続印刷()
Dim i As Long
i = 1 '変数iを1にする
While Cells(i, 1) <> "" 'セル(i,1) A列i行目が空白になるまで繰り返す
Workbooks.Open (Cells(i, 1)) ’セル(i,1)の名前のファイルをOpen
ActiveSheet.PrintOut ' 印刷
ActiveWorkbook.Close ’Close
i = i + 1 '次の行に移る
Wend ’ここまでが繰り返し
End Sub
A1から空白なしに印刷対象ファイルが入っているとしています。
このマクロで動くと思います。
マクロの登録、マクロの起動については調べてね。
詳細なアドバイス、ありがとうございました。
すったもんだした挙げ句、諸般の事情によりこの処理は沙汰やみとなりました。
なお、マクロは参考とさせていただきます。
お礼が遅れて申し訳ありません。重ね重ねありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
- Excel(エクセル) セルによって印刷するシートを変える方法 EXCEL-VBA 2 2022/08/01 20:48
- プリンタ・スキャナー 印刷ができない 6 2022/04/01 20:47
- Excel(エクセル) エクセルでキーリストからデータを取り出して1枚1枚印刷するには? 11 2022/06/27 09:52
- フリーソフト 写真の一覧印刷ソフト 2 2023/07/28 16:48
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Excel(エクセル) 【Excel】複数シートがあるエクセルデータで片面印刷と両面印刷設定がシートごとに入 1 2023/03/10 15:25
- Excel(エクセル) エクセルのフッタやヘッダーについて 3 2023/02/04 09:45
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで白紙ページを消す方...
-
数式による空白を無視して印刷...
-
エクセル 同じシートで印刷ペ...
-
エクセルで謎の2枚目が印刷される
-
Excel 複数のシートの印刷順の...
-
エクセルで図形やオートシェイ...
-
エクセルを最初からA4の大きさ...
-
EXCELで段組みできますか?
-
エクセルの印刷範囲の自動変更...
-
差込印刷で郵便番号のハイフン...
-
エクセル「改ページビューで印...
-
エクセルだけ印刷しても白紙です。
-
請求書と領収書の作成
-
エクセル 2upできません。
-
エクセルの全シートをPDFにでき...
-
Excelで印刷すると、ルビがずれ...
-
Excel 1枚のページに2つのシー...
-
エクセルで特定の行のみ印刷したい
-
エクセルをメールに添付した時
-
エクセルで印刷するとき、連番...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで謎の2枚目が印刷される
-
エクセルで白紙ページを消す方...
-
Excel 複数のシートの印刷順の...
-
エクセル 白黒印刷で白線を印刷...
-
エクセル 同じシートで印刷ペ...
-
数式による空白を無視して印刷...
-
エクセルを最初からA4の大きさ...
-
エクセルで印刷するとき、連番...
-
エクセルから帳票形式に差込印...
-
差込印刷で郵便番号のハイフン...
-
エクセルで空白の部分を印刷範...
-
エクセルの長い表を3列で印刷...
-
B5縦で作ったエクセル文書をA4...
-
エクセルで図形やオートシェイ...
-
エクセル 2upできません。
-
エクセルの印刷範囲の自動変更...
-
エクセルの全シートをPDFにでき...
-
EXCELで段組みできますか?
-
Excelで印刷すると、ルビがずれ...
-
VBAでホルダー内のPDFを一括印...
おすすめ情報