• ベストアンサー

エクセルマクロによる大量ファイルの一括印刷方法

Wendy02の回答

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答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

Dauphin
質問者

お礼

詳細なアドバイス、ありがとうございました。 すったもんだした挙げ句、諸般の事情によりこの処理は沙汰やみとなりました。 なお、マクロは参考とさせていただきます。 お礼が遅れて申し訳ありません。重ね重ねありがとうございました。

関連するQ&A

  • エクセルでのファイル名の一括変更 マクロ

    皆様お世話になります。 あるフォルダーの下位にユニークに名前の付けられた900個ほどのフォルダーがあり それれぞれの、フォルダーの中にA,Bというフォルダーがあります。 その中にa.xls,b.xlsなどというファイルが存在しています。 そのa.xlsやb,xlsの名称を変換したいのですが数量が非常に多いためマクロか、何かで変更する方法がありますか? ファイル名の条件として 開いたエクセルのC,4とH,4を合体させたファイル名にすると、非常にありがたいのですが。 よろしくお願いします。

  • フォルダを指定し、複数のエクセルファイルの情報を別ファイルに保存したい。

    エクセルのマクロで以下の実装を行いたいと思っています。 -------------------------------------------------------------- 1.あるフォルダを指定 2.そのフォルダの中に入っているエクセルファイルの特定列複数行(行数不明、データがなくなるまで)の情報を抜き出す 3.2で抜き出した情報を別ファイル(テキスト形式)に保存 -------------------------------------------------------------- ・2で指定するフォルダには複数ファイルがあります ・3で保存するファイル名は2で開いたファイル名と同じ名称にしたい(拡張子は別) フォルダの状態は以下のようになっています。 editor.xls ←マクロを組みたいエクセルファイル L folderA    L A1.xls    L A2.xls    L A3.xls      : L folderB    L B1.xls    L B2.xls    L B3.xls      : L forlerTextfile    L A1.txt ←作りたいファイル    L A2.txt    〃    L A3.txt    L B1.txt    L B2.txt    L B3.txt      : 分かりづらくて申し訳ありませんが、どなたかご教授いただけないでしょうか。 宜しくお願いいたします。

  • エクセルのマクロでファイルを開く

    エクセルの「ファイルを開く」ダイアログボックスを使用してファイルを開き、その開いたファイルに対してとあるマクロを実行させたいと思っています。 エクセルの「ファイルを開く」ダイアログボックスでパス取得までは理解出来たのですが、その先の処理が分かりません。 「ファイルを開く」と言うのは、「現在アクティブになっているシートにデータを貼り付けて」の処理でも構いません。 Dim Ret As Variant Ret = Application.GetOpenFilename("Excel ブック (*.xls), *.xls, テキストファイル(*.txt),*.txt") If Ret = False Then MsgBox "キャンセルが選択されました。" Exit Sub Else       'ここにRetで取得しているパスのファイルを開いて、sub_WAITのマクロを実行させたいです。 sub_WAIT.Show End If End Sub

  • エクセルマクロでマクロをアクティブにしたくない

    エクセルのマクロをひとつの「マクロA」という名前で、データーファイルからセルに入っている内容などを呼び出しながらまくろAのシートにデーターを貼り付けながら作業をしています。 Workbooks.Open Filename:= _ "C:\Documents and Settings\owner\My Documents\マクロ.xls" Application.Run "マクロ.xls!マクロ" と記載すると、マクロXLSがアクティブになってしまいます。 その為記載に'ActiveWindow.WindowState = xlMinimized と入れたりするのですが、アクティブになるシートがマクロ以外にうまくいかないことがあるのです。 データーシートは、毎回データーが変わる関係で、DATA.xlsがAのときやBのときが発生します。

  • エクセルのマクロでテキストファイルを生成するには?

    いつもお世話になっております。 マクロで エクセルのSheet1上のA1:A5のデータをコピーして 『吐き出し.txt』というテキストファイルを生成したいのです。 どのようなマクロを書けばよいかご教示ください。 通常の「txt形式で保存」ですと、 データ内に「,」があるため、 テキストファイルだとデータの両端に「"」がついてしまうため 不具合が発生するのです。 なんとかなりませんでしょうか。 よろしくお願いいたします。

  • マクロを生かしてファイルをコピーする術エクセル

    お世話になっております。 マクロを組み込んだ、ファイルA.xls を作成しました。 誤って消してしまっては大変ですので、ファイルをコピーして コピーファイルA.xls というものを作成しました。 ただ、こちらのコピーファイルA.xls というもので、マクロを実行しようとすると エラーが出てしまします。 コピーファイルA.xls がファイルAと全く同じマクロを実行してもエラーが出ない ように、ファイルA.xls をコピー(保存)する術はございますでしょうか? ちなみにWINDOWSXPでエクセル2003を使用しております。 マクロ、エクセルに関する知識が乏しいため、質問の仕方に問題があるかも しれませんが、何卒、ご指導のほどよろしく御願い申し上げます。

  • Excelファイルの一括作成方法

    お世話になります。 Excelファイルの一括作成方法というのがあれば教えていただきたいと思い投稿させて頂きます。 具体的な内容ですが、次のような事をしたいと考えています。 1.同じ内容のExcelファイルを別名で複数個一括作成(200個等)したい 2.さらに「1」は、外部TXTファイル等に記述された1行   ごとの記述をそれぞれファイル名にしたい。  例えば、Txtファイルの1,2行目がそれぞれ a,b な  らば、Excelファイル名はそれぞれ「a.xls」「b.xls」  とする できれば、1.2.全てを実現したい所ですが、いずれ かでも方法ががおわかりの方。また、別のアプローチがあ る等ございましたら、ぜひ教えていただきたいと思いま す。 宜しくお願い致します。

  • エクセルファイルの一括変換・処理方法について

    エクセルファイルの一括変換・処理方法についてお聞きしたいことがあります。100行3列の数値データを持つエクセルファイルがあるとします。4列目に計算式例えば、D1=A1*B1をD列にフィルする作業を自動的に行い、かつ複数の、同様なデータを持つエクセルファイルにも一括して同一作業を行う方法を、どなたかご教授くださいませんでしょうか?おそらくマクロを使うこととなるかもしれませんが、もしそうでしたらそのマクロについてもお教えいただけるとありがたいです。よろしくお願いいたします

  • VBA マクロ付きExcelファイルを無効で開く

    タイトルの通り、マクロを含むExcelファイルを、マクロ無効でオープンしたいのですが、そういうことは出来るでしょうか? 新規ファイル作成.xlsというマクロがあって、temp.xlsというマクロを含んだファイルをnew.xlsというファイル名でコピーし、それをオープンしてデータを追加して終了。 次にそのnew.xlsをオープンした時にはtemp.xlsに含まれるマクロが実行される・・・ というようなことをしたいと思っています。 もしくは新規ファイル作成.xlsのマクロから、直接new.xlsのファイルにコーディングが可能であれば、それでも良いのですが・・・ データベースから表を作成し、作成後の変更データを再度データベースへ戻す、ということがやりたいのですが、上記の方法しか思いつきません。 もし上記の方法が出来ない場合は、別の方法がありますでしょうか? どなたかアドバイス、よろしくお願いします。

  • excelで最初に開いたファイル名称を覚えておく様な処理は可能ですか?

    excelで最初に開いたファイル名称を覚えておく様な処理は可能ですか? 1.最初の処理 (1)A.xlsのファイルを開く (2)マクロ:2010.xlsのファイルを開く (3)マクロ:チェックのシートをA.xlsの明細のシートの前に追加 (4)マクロ:チェックのシート名称をコピーした日付と時間のシート名に変更 (5)マクロ:2010.xlsのファイルをディスクトップ上から削除 2.後から追加する処理 (6)B.xlsのファイルを開く (B.xlsは、A.xlsとは異なるフォルダを作成し、A.xlsの特定のセルの中身の名称でファイル名保存されます。名前が異なるだけでマクロの中身はA.xlsと同じ) (7)マクロ:2010.xlsのファイルを開く (8)マクロ:チェックのシートをB.xlsの明細のシートの前に追加 (9)マクロ:チェックのシート名称をコピーした日付と時間のシート名に変更 (10)マクロ:2010.xlsのファイルをディスクトップ上から削除 上記を対応する為に下記の様なマクロ((6)(7)の部分を抜粋)を設定しています。 '2010.xlsのファイルを開く(2010.xlsのファイルは適宜、ディスクトップにコピーされます) Workbooks.Open FileName:="C:\Documents and Settings\ID\デスクトップ\2010.xls" 'チェックのシートを現在のブックの明細の前にコピーする。 Windows("2010.xls").Activate Sheets("チェック").Copy before:=Workbooks(1).Sheets("明細") 単独でA.xlsやB.xlsのファイルが開かれている場合には、 上記の対応で問題ないのですが、A.xls、B.xls以外のexcelファイルが開かれていると、 実行時エラーが出てしまいます。 Workbooks(1)の部分で最初に開いたexcelのファイル名称を指定しているのが 影響しているのはわかるのですが、ここの処理をなんとかしたいというおもいです。 つまり、複数のexcelファイルが開かれていて、A.xlsやB.xlsのファイルを後から開いても エラーがでない様にするには、どの様な処理にしたらよいのか教えて頂きたく。 マクロを実行したexcelのファイル名を覚えておいて、その名前が(1)に置き換わる 様な処理が望まれる処理です。