Excelファイルの一括印刷をしたときに、ヘッダーもしくはフッターに通し番号(連番)を入れるマクロが出来ないかと思い、試行錯誤しているのですが、行き詰っています。
考えたフローは以下の通りです。
1.(ダイアログボックスなどを用いて)対象フォルダを選択する
2.対象フォルダに入っているExcelファイルを1つ開き、
それぞれのシートのヘッダー(フッター)に通し番号を入れ、プリンタに情報を送り、ファイルを閉じる。
3.次のファイルを開き、それぞれのシートに2.でふった番号の次の番号から通し番号を入れ、
プリンタに情報を送り、ファイルを閉じる。
4.3.を繰り返し、ファイルが無くなったら終了。
まずはこのフローでマクロが作れるか、
もし作れるのであれば、お手数ですがコードも教えて頂けると非常に助かります。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
フォルダを指定するのはメンドクサイので、後で実装してください。
sub macro1()
dim myPath as string
dim myFile as string
dim n as long
dim s as worksheet
mypath = "c:\test\" ’後述参考URL参照
myfile = dir(mypath & "*.xls*")
do until myfile = ""
workbooks.open mypath & myfile
for each s in workbooks(myfile).worksheets
n = n + 1
s.pagesetup.rightheader=n
s.printout
next
activeworkbook.close false
myfile = dir()
loop
end sub
#参考
http://officetanaka.net/excel/vba/tips/tips39.htm
ありがとうございます。
こちらで組んでみますと、同じシートは同じ番号が付いて出てきてしまいました。
シートは同じでも出力ページ毎に番号を付けたいのですが、可能でしょうか?
No.2
- 回答日時:
「連番」とは「ページ番号にゲタをはかせる」で良いですか?
印刷ページ数は、以下のコマンドで拾えます。
Application.ExecuteExcel4Macro("get.document(50)")
1.(ダイアログボックスなどを用いて)対象フォルダを選択する
2.対象フォルダ内のxlsファイル一覧を取得し、シート上にブックとそれぞれのシート名一覧表を作成する。
3.ここでいったん止めて取得した一覧を、手動でメンテナンスしてください。
さもないと、順序指定ができない・不要なシートにも付与しちゃう等、不都合満載。
以下、3.のすべての行について4.~6.をループ
4.メンテナンスした3.に基づいて、ブックとそれぞれのシートの印刷ページ数を拾う。
(ExecuteExcel4Macro)
5.各ブック・シートのヘッダーあるいはフッターへのページ番号出力を設定する。
6.4.の累計に基づいて初期ページ値を設定する。
※同様にして、印刷もVBA化すると便利。
同じものを実務で作りましたが、手元にないのでコードはご容赦ください。
No.3
- 回答日時:
あなたのヤリタカッタ事:
>それぞれのシートのヘッダー(フッター)に通し番号を入れ
実はこれが嘘で、なんて事は無い単に連番のページ番号を振りたかっただけということですね。
sub macro2()
dim myPath as string
dim myFile as string
dim w as workbook
dim i as long
application.screenupdating = false
activesheet.copy
set w = activeworkbook
mypath = "c:\test\" ’参考URL参照
myfile = dir(mypath & "*.xls*")
do until myfile = ""
workbooks.open mypath & myfile
workbooks(myfile).worksheets.move after:=w.worksheets(w.worksheets.count)
myfile = dir()
loop
application.displayalerts = false
w.worksheets(1).delete
application.displayalerts = true
for i= 1 to w.worksheets.count
with w.worksheets(i).pagesetup
.rightheader ="&p"
.firstpagenumber = xlautomatic
end with
next i
w.worksheets.select
w.printout
w.close false
application.screenupdating = true
end sub
質問が分かりづらくて申し訳ございませんでした。
書いてくださったコードで、私のやりたいことは出来るはずなのですが、
(1つのブックにまとめて、何もデータのないシートを削除して印刷するということですよね?)
シートは全て削除または非表示に出来ませんというようなエラーが出てしまいます…
No.4
- 回答日時:
注意してたつもりでしたが見落としてたみたいですね。
失礼しました。sub macro2r1()
dim myPath as string
dim myFile as string
dim w as workbook
dim i as long
application.displayalerts = false
application.screenupdating = false
activesheet.copy
set w = activeworkbook
mypath = "c:\test\" ’参考URL参照
myfile = dir(mypath & "*.xls*")
do until myfile = ""
workbooks.open mypath & myfile
workbooks(myfile).worksheets.move after:=w.worksheets(w.worksheets.count)
myfile = dir()
loop
w.worksheets(1).delete
for i= 1 to w.worksheets.count
with w.worksheets(i).pagesetup
.rightheader ="&p"
.firstpagenumber = xlautomatic
end with
next i
w.worksheets.select
w.printout
w.close false
application.screenupdating = true
application.displayalerts = true
end sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダ内の全ブックのシート...
-
ExcelVBAで今開いているユーザ...
-
コマンドボタンでマクロを起動...
-
【Excel VBA】ブックを複数開い...
-
フォルダ内の全ブックのシート...
-
ACCESSのVBAでテンプレとなるxl...
-
エクセルVBA Workbook変数に変...
-
EXCEL VBA起動時の処理
-
【ExcelVBA】指定の書式で、マ...
-
【VBA】他のExcelを起動し、呼...
-
excelでハイパーリンク 別ブッ...
-
Excel VBAを後ろで動かす方法
-
VBA ファイルの開き方
-
[Excel VBA] フォルダ内の複数...
-
エクセル2010で2003形式でマク...
-
【マクロ】その時、その時で変...
-
VBAに詳しい方教えてください。
-
【ExcelVBA】クエリの更新とピ...
-
「開いているすべてのブック」...
-
エクセルファイルを自身のファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダ内の全ブックのシート...
-
ExcelVBAで今開いているユーザ...
-
エクセルVBA Workbook変数に変...
-
フォルダ内の全ブックのシート...
-
【Excel VBA】ブックを複数開い...
-
【ExcelVBA】指定の書式で、マ...
-
VB2010でExcelの行をコピーして...
-
フォルダ内の全てのBookに同じ...
-
EXCELマクロでxlsとxlsxを開く方法
-
excelマクロ、任意セルの値で名...
-
[Excel VBA] フォルダ内の複数...
-
VBA、Excelのworkbook.open に...
-
すでに開いているブックのマク...
-
EXCELマクロで上書きメッ...
-
VBA セル入力された日付データ...
-
EXCEL VBA起動時の処理
-
エクセルのマクロについて教え...
-
他のBookのユーザー定義関数を使う
-
Excel VBAを後ろで動かす方法
-
Excelの一括印刷で通し番号をつ...
おすすめ情報