[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『『シート名指定』の 複数ファイル一括印刷』(SUS316L)
いつもお世話になっています。 複数ファイルの一括印刷は、過去にMARBINさんが、 作成された以下のコードを使わせて頂いてますが、 2つの調整ができず、困窮しています。 過去ログを検索し続けましたが、相談させてください。
Sub insatu() Dim fol As String Dim f As String Dim wb As Workbook Dim wscnt As Long Dim i As Long fol = "D:\marbin" f = Dir(fol & "\*.xls") Do While f <> "" Set wb = Workbooks.Open(fol & "\" & f) wscnt = wb.Worksheets.Count For i = 1 To wscnt wb.Worksheets(i).PrintOut Next i wb.Close f = Dir() Loop Set wb = Nothing End Sub
1 シート名指定 印刷対象ブックのシート名”1-3) 出力対比表”だけを 印刷対象にしたいのですが、修正方法が分からず、 過去ログの他から引用できないか探しましたが、 見つけられず、おしえていただ
2 対象ファイルが印刷されない。 対象のExcelは『Microsoft Excel 97-2003ワークシート』で、 f = Dir(fol & "\*.xls")の拡張子も確認しましたが、 印刷されませんでした。 ※試しに.xlsxのファイルを*.xlsxに変更したら印刷できました。
印刷対象のファイルが、拡張子で認識できないことが 理由と考えられますが、どのように修正したらよいか、 教えてください。 (そもそもが間違っていればご指摘頂きたく。)
いつもありがとうございます。よろしくお願い致します。
< 使用 Excel:Excel2013、使用 OS:Windows8 >
1だけ。
> wscnt = wb.Worksheets.Count の部分で開いたブックの総シート数を求め
> For i = 1 To wscnt 〜 > Next i で、その枚数分処理を繰り返し
> wb.Worksheets(i).PrintOut で、i番目のシートを印刷している。
なので > wscnt = wb.Worksheets.Count > For i = 1 To wscnt > wb.Worksheets(i).PrintOut > Next i を > wb.Worksheets("1-3) 出力対比表").PrintOut だと思うが。 (ねむねむ) 2016/06/23(木) 14:35
ねむねむさん ご回答ありがとうございます。取り急ぎ、 xlsxファイルで保存して、検証しましたが、 シート指定できました。 各行の解説もありがとうございます。 .xlsの方が解決できてませんが、前進しました。 ありがとうございます。 (SUS316L) 2016/06/23(木) 14:50
試行錯誤しておりますが、解決できません。 f = Dir(fol & "\*.xls")の、””の中の、 拡張子をファイル名からコピーなどして 置換してますが、無反応です。
対象のファイルは、『Microsoft Excel 97-2003ワークシート』 で、開くとExcel画面の一番上に、ファイル名.xls〔互換モード〕 と、互換モードであることは関係ないでしょうか。 念のため、ご連絡致します。 (SUS316L) 2016/06/23(木) 16:00
念のため確認だがそのXLSブックはD:\marbin配下にきちんとあるのだろうか? (ねむねむ) 2016/06/23(木) 16:05
確認指示ありがとうございます。 1つのフォルダの中のファイルとありましたので、 xlsブックはまとめていました。
が、
マクロ(VBA)を記録したブックも同じフォルダに 入れていた為、ファイルを開く対象になり、 弾かれていたようです。
マクロを記録したブックを別のフォルダに保存して 実行したら、解決しました。 お騒がせしてすいません。小職の誤認識でした。 ファイル名指定の方法、教示ありがとうございました。 (SUS316L) 2016/06/23(木) 16:45
解決してよかったがこのような記事を見つけた。
Dir関数では3文字拡張子は前方一致で検索されるそうだ。 (私のところでもDir関数で「*.XLS」を検索したところ「.XLSX」「.XLSM」も検索された) もし、XLSXやXLSMは除外したいと思ったらブックを開く前に拡張子のチェックを行う必要があるようだ。
http://officetanaka.net/excel/vba/tips/tips69.htm
(ねむねむ) 2016/06/23(木) 16:52
ご返信ありがとうございます。 対象ファイルの拡張子を確認する様にします。 (印刷対象だけをフォルダに入れることと、 xlsだけが判別されるわけではないのですね。)
今検証して、印刷されたのですが、 ご返信頂いたので相談させてください。
1指定以外の「その他のシート」もブックに入っているが、
2シート名は指定されているので、対象シートだけが 印刷される。
3印刷枚数が、その他のシートの数だけ、印刷されます。
4指定シートだけを、1回だけ印刷するにはどうしたら よいでしょうか。
(SUS316L) 2016/06/23(木) 17:04
もしかして > wb.Worksheets(i).PrintOut を > wb.Worksheets("1-3) 出力対比表").PrintOut にしただけだろうか?
私としては >> wscnt = wb.Worksheets.Count >> For i = 1 To wscnt >> wb.Worksheets(i).PrintOut >> Next i >を >> wb.Worksheets("1-3) 出力対比表").PrintOut >だと思うが。 で、 >> wscnt = wb.Worksheets.Count >> For i = 1 To wscnt >> wb.Worksheets(i).PrintOut >> Next i 全体を >> wb.Worksheets("1-3) 出力対比表").PrintOut に置きかえるつもりで書いたのだが。
つまり Do While f <> "" Set wb = Workbooks.Open(fol & "\" & f) wb.Worksheets("1-3) 出力対比表").PrintOut wb.Close f = Dir() Loop としてくれ。
説明不足で済まなかった。
(ねむねむ) 2016/06/23(木) 17:11
なるほど、了解です。各行の解説してもらっていたので、 なんとなく何をしているかは、分かっているつもりでした。 修正箇所のナビゲーションとして、4行の後に記載されたと 思い込んでました。 全体を入れ替えるのですね。「つまり、」も記載頂いて たすかりました。 毎日、1日50件程度の数のファイルが毎日送信されてきており、 小職が印刷し、課員が作業に入る、外出する、と、 印刷時間の短縮が必要でした。 ご協力ありがとうございました。 (SUS316L) 2016/06/23(木) 17:20
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.