• ベストアンサー

エクセルVBA 一覧にあるブックを順に印刷するには

こんばんは。ブック名の一覧の中から指定したものを順に印刷をしていく方法を教えてください。 D10から下にブック名が書いてあります。 その横(C列)に“印刷”と入力してあるブックのシートすべてを順に印刷をしたいと思っています。 ただし、シート名に「保存」という名前を含んだものについては印刷対象から除きたいというわがままなものなのです。 ブックはすべてマクロ実行のファイルと同じフォルダの中にあります。 これ、可能でしょうか?よろしくお願いします。

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

  • ベストアンサー
  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.2

>シート名に“保存”が含まれるブックのシートは印刷しないというものなのです すいません、早とちりでした(最近多い...(^_^;) 改良版です ちょっと、無理やりな所は有りますが、とりあえず動くようなので、アップして見ます 作業列は不要です ---------------------------------- Sub sampl03()   l = 10   Do While Cells(l, "D") <> ""     If Cells(l, "C") = "印刷" Then       Workbooks.Open Filename:=Cells(l, "D")       sh = 1: sn = "": ts = ""       Do         On Error Resume Next         sn = Sheets(sh).Name         On Error GoTo 0         If sn = "" Then           Exit Do         End If         On Error Resume Next         ts = Application.WorksheetFunction.Search("保存", sn)         On Error GoTo 0         If ts = "" Then           Sheets(sh).Select           ActiveWindow.SelectedSheets.PrintOut '          MsgBox "印刷 " & sn 'デバッグ用         End If         sn = "": ts = ""         sh = sh + 1       Loop       ActiveWindow.Close     End If     l = l + 1   Loop End Sub

reprogress
質問者

お礼

またおつきあいありがとうございます。すごいです。うまくいきました。こうやって書けるようになりたいです。ありがとうございました。

その他の回答 (1)

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

まず、作業列を用意します(E列とします) E10 = AND(C10="印刷",ISERROR(SEARCH("保存",D10))) とし、下にコピーします そうすると、C列に「印刷」と入ってて、ファイル名に「保存」が含まれてないものが、「TRUE」と表示され、それ以外は「FALSE」と表示されたと思います VBAはこのようになります ------------------------------ Sub sampl03()   l = 10   Do While Cells(l, "D") <> ""     If Cells(l, "E") = True Then       Workbooks.Open Filename:=Cells(l, "D")       ActiveWindow.SelectedSheets.PrintOut       ActiveWindow.Close     End If     l = l + 1   Loop End Sub -------------------------- 終了は、D列のセルに何も入っていない事で、判定していますので D10以降には、ファイル名以外は入れないようにしてください

reprogress
質問者

お礼

ASIMOVさん、こんばんは。アイデアですね。こうすることはぜんぜん思いもつきませんでした。説明不足で申し訳ございませんが、今回したかったのは、シート名に“保存”が含まれるブックのシートは印刷しないというものなのです。 たとえば、「7月売上」というブックにシートが2つあり、 一方が、「7月明細」 もう一方が「7月保存」 だとしたら、「7月明細」は印刷して、「7月保存」のシートは印刷しないというものです。 考えれば、無理なのかもしれないと思っています。ブック名しかD列になく、シート名はないので・・・。

関連するQ&A

  • 別bookのシート名一覧を作成するVBA(都度)

    初めまして。エクセルVBA初心者です。 別bookのシート名を取得するマクロをつくりたいのですがご教示頂けないでしょうか? その際、マクロを実行すると最初にどのbookを開くか?ファイル場所を聞いてくるマクロを設計したいのです。 その後、今開いているアクティブbookのA列の1行目に別bookのシート名一覧が入力されるというものです。 ファイル場所を聞いてくるマクロは調べてもでてこないため、質問しました。 完了したら別bookは閉じてある状態であることが理想です。 そして、その隣のB列はまたさらに他の別bookのシート名一覧を比較用に入力予定ですので、B列用の別マクロを続きで作成したいと思っています。 ご教示のほど宜しくお願いします。

  • 複数のエクセルブックから特定シートの特定セル抽出

    同一フォルダ内にある複数のExcelブックから特定シートの特定セル値を抽出して一覧表にまとめるExcel マクロ(VBA)を教えてください。 よく似ている質問、回答を読んだのですが、私のレベルではとても応用できず質問させていただきます。 【前提】 ・実行する端末のOSはWindows XP(SP3)、Excelは2003 ・対象フォルダはネットワーク接続フォルダ「\データ解析\データ」  この中に、複数のExcelブックがあります。 ・抽出したい対象は、各ブック内のシート(シート名はファイル名と同じ)の「BO6からBW16までの□の範囲」で統一されています。 【抽出一覧作成イメージ】 ・「集計.xls」ブックの「Sheet1」の2行目から抽出した結果を一覧表示する。 ・表示はA列に抽出元ブック名(=ファイル名)、B列に抽出元BO6セルの値。以降,C列・D列と 順に値を入れていきたい。 ・BO6~BW16までのセル値を「集計.xls」ブックの「Sheet1」に貼り付ける際には「値で貼り付ける」が望ましい。 というようなイメージです。 とても勝手なお願いではありますが、宜しくお願いいたします。

  • 別ブックのシート名称一覧を作成したい

    excel2016 自ブックの中でシート名一覧作成というマクロはwebにあったのですが、 他ブックのシート名一覧を自ブックへ作成というのを どの様に対応したらよいのかがわかりません。 やりたい内容は、 ①自ブックを開く(シート収集するファイル) ②file_openマクロ実行  c:\workにあるfile.xlsmのブックを開く(file.xlsmが他ブック) ③file.xlsmの全シート名称一覧を  自ブックのsheet1シートのA1セルから下へシート名称記載させる。  file.xlsmに登録されているシート名称は日付と時刻と時刻  202110070830 202110071700  … みたいな12桁のシート名称になっている ③自ブックsheet1のB1からB列最終行(A列にデータがある最終行)  まで必要なセルに1を設定 ④自ブックB列でセルに1があれば、他ブックの対象シートを自ブック  へコピー 以上①~④をマクロで対応したいのですが ③の内容がわからないのでベタでマクロ教えていただきたく、よろしくお願いします。

  • 複数ブックの印刷マクロを作成したいと思っています。

    2つのフォルダがあり、その中に20のブックがそれぞれあります。 20のブックの中にはシートが4つづつあり、シート3とシート4のみ印刷したい。 1つのフォルダでは あまり詳しくありませんのでお知恵をお借りしたいと思います。 まず、フォルダの中にある複数ブックの印刷を一括で管理できるマクロは可能なのでしょうか。 二つのフォルダの中に20個のブックがあり、その中にはそれぞれ4シートあるExcelファイルで構成されています。 毎回シート3とシート4のみの印刷をブックの数だけ行います。 40ブックを開け、約80シート印刷するのを簡素化できないかなと思っております。 まず Aフォルダの中 20のブックの中にはシートが4つずつあり、それぞれシート3は全て印刷。 ブック15~19のみシート4は印刷しません。 要約しますと ブック1~14とブック20はシート3.シート4を印刷 ブック15~19はシート3のみ印刷 Bフォルダも同様 ブックそれぞれにマクロシートがあればいいかなと思っているのですが。。。 PC環境はXPです。その他重要なソフトが入っているのであまりマクロが重い場合は諦めようかなと思っています。 簡単に印刷できるようなら教えていただけると幸いです。 初心者なのでコピペでOKぐらいにしていただけますと助かります。 よろしくお願いいたします。

  • フォルダ内の特定ブックだけを1つのブックにまとめる

    はじめましてマクロ超初心者です。 会社のシステム(ツール?)で同じフォルダに1案件につき2つのブックが作成されます。 毎回約30案件、すなわち同じフォルダに60ブックあります。 (1)同じフルダ内に60ブック (2)その内、同じ案件が2つ。ブック名「1_****」と「2_****」 ****は毎回かわる (3)ブックには2つのシート。シート名「1」と「2」 (4)ブック「1_****」のシート「1」が開いた状態、ブック「2_****」のシート「2」が開いた状態になってる (5)必要なのはブック「1_****」のシート「1」とブック「2_****」のシート「2」 この「1_****」のシート「1」と「2_****」シート「2」を「1_****」にまとめる作業を毎回手作業でやっています。これをなんとかマクロで出来ないでしょうか?同じフォルダにある複数ブックをまとめるマクロは見つけました、複数=全てのブックに実行されてしまいます。フォルダ内の特定のブックをまとめるマクロがみつからず。。。どなたかご教授して頂けませんか?

  • Excel VBA 複数ブックのシート結合方法

    複数ブックの特定のシート(都度指定)のみを結合するマクロを組みたいです。 例えば、「ファイルマージ前」というフォルダがあって、その中には数値のみ違う同フォーマットのアンケート集計結果が保存されています。 このフォルダ内には50ほどのブックが保存されていて、そのブック内の「N表」というシート(50あるブック内全てに存在するシート)を新規ブック(マクロを組み込むブック)の1シートに上から順に値コピーしていきたいです。 今後、別の機会でファイルマージが必要になった際にも使用出来る様に、シート名を都度指定(セルにシート名を入力して、そのシート名を参照する等)出来るようにしたいのですが、自分の知識とネット等で調べた情報のみではうまく作成出来ませんでした。 詳しい方のお知恵をお借りしたいです。 宜しくお願い致します。

  • 【エクセル】新しいブックにコピーするVBA

    急ぎで必要で、困ってます。 ”一覧”と”原本”という2つのシートがあります。 ”一覧”シートのA55~H78には、最大24個の商品の情報が縦に入力されています。 A列はメーカー名、B列は商品名・・・H列はフラグ(”0”か”1”のどちらか) ”原本”シートは1商品1枚の注文書みたいなものです。 G13に商品名、G16にメーカー名・・・といった情報を入力する欄が設けられています。 そのエクセルに対し、以下の処理を実行してくれるVBAを作りたいです。 新しいブックを開き、そこに”原本”シートをコピーする。但し、以下の条件がある。 ・”一覧”シートのH列のフラグが ”1”と入力されている商品の情報が入力されている状態の  ”原本”シートが新しいブックにコピーされる様にしたい。 例えば、”一覧”シートに、以下の情報が入力されているとします。 A55=株式会社斎藤 B55=鈴木チョコ ・・・ H=1 ↓ Hが1なので、G13=鈴木チョコ、G16=株式会社斎藤と入力されている”原本”シートを 新しいブックにコピーします。 この処理を繰り返して、H列に”1”と入力されている情報分の”原本”シートが 新しいブックにコピーされる様にしたいです。 以上、丸投げになってしまうので、大変恐縮なのですが、分かる方がいましたら返信お願いします。

  • エクセルの複数ブックをまとめて印刷したい

    お世話になります。 早速ですが、フォルダ内に複数のエクセルブックがあります。それらのブックには複数のシートがあります。 フォルダー内の複数のブックの複数のシートも含むものを一括印刷したいのですが可能でしょうか? フォルダー内を一括選択し、ファイルの印刷をした場合、 複数のブックを印刷することは可能なのですが、それらにあるはずの複数のシートが印刷されません。 「複数のブックの全てのシートも含むものを一括印刷」したいのですができるでしょうか? よろしくおねがいします。

  • 複数のExcelブックから特定シートのセル範囲抽出

    同一フォルダ内にある複数のExcelブックから特定シートの特定セル範囲を抽出して一覧表にまとめるExcel マクロ(VBA)を教えてください。 このサイトで殆どよく似た回答を読んだのですがうまくいきません。VBA初心者です。 よろしくお願いします。 【前提】 ・実行する端末のOSはWindows 10 ExcelはOffice365 ProPlus ・対象フォルダはネットワーク接続フォルダ  この中に、複数のExcelブック(xlsx、xlsm)があります。 ・抽出したい対象は、各ブック内の「台帳」シートの「A3:Cの最終行」で  複数のブックの中には「台帳」シートが含まれていないブックも混在しています。 【抽出一覧作成イメージ】 ・「集約.xlsm」ブックの「集計」シートの2行目から抽出した結果を一覧表示する。 ・「集約.xlsm」ブックにマクロは登録する ・表示はA列に抽出元ブック名(=ファイル名)、B列からD列に抽出元「A3:Cの最終行」セルの値。 ・「A3:Cの最終行」セルの値を「集約.xlsm」ブックの「集計」に貼り付ける際には「値で貼り付ける」が望ましい。

  • 複数エクセルブックを一つにするマクロが知りたいです

    フォルダ内に「01.xlsx」「02.xlsx」…「10.xlsx」という10個のブックがあります。 各ブックの中には、ブック名に対応した形で「01」「02」…「10」というシート名のシートが一つだけ入っています。 同フォルダ内に「matome.xlsx」というブックを用意して、マクロ処理をかけることで、「matome.xlsx」の中に「01」「02」…「10」のみの10個のシートが入った状態にしたいです。 マクロ処理をかける前の「matome.xlsx」のシートには、「sheet1」という、シートが一つだけ入っている状態です。 仕事のデータをまとめるのに、困っています。。。 何かいい方法はありますでしょうか。 マクロに詳しい方、お教えいただければ幸いですm(_ _)m

専門家に質問してみよう