• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル マクロで印刷)

エクセル マクロで印刷

HohoPapaの回答

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.7

後記コードです。 印刷ダイアログでキャンセルしたら、空振りするようにしました。 実在しないシート名が指定された場合は メッセージを表示して終了するようにしました。 >2番目の課題はご指摘の通り別の質問にします。 >これが出来れば課題1は不要の気がします。 >が、いきなり2番目では(当方にも)難しいかと思い2段階にしたのですが。。。 >1.が出来る人には同じ事、ですかね???? 2ができれば1は不要と思いますが、 1を少し手直しすれば2になるということはありません。 どのブックたちを対象にするかの制御部分は流用できますが、 問題は、 個々のブックに含まれるそれぞれの複数シートの中から どのシートたちを対象にするのかを選択させるインターフェース部分です。 常識的には、添付画像のようなフォームを使うことになりますが 失礼ながら、このサイトでコードを受け取り 少々修正して使うレベルでは、歯が立ちません。 どのシートたちを対象にするのかのインターフェース部分を どのように実現するかをしっかり考える必要があり、 フォームを使うのであれば、一段のスキルアップが必要です。 Option Explicit Sub Sample1()  With ThisWorkbook.Sheets(1)   Const DataCol = 2 'シート名の埋まっているセルたちの列番号   Dim RowCounter As Long   Dim PageCnt As Long   Dim PrinGo As Boolean   Dim ShRange As Range   Dim ShName As String      PageCnt = 0     '初回判定用カウンター   RowCounter = 3    'シート名の埋まっているセルたちの開始行   .Select   Do    If .Cells(RowCounter, DataCol).Value = "" Then Exit Do    Set ShRange = Range(.Cells(RowCounter, DataCol), _             .Cells(RowCounter, DataCol)) 'シート名セルを特定    ShName = ShRange.Text             'シート名を取得        If IsSelect(ShRange) = True Then        '選択しているか?         If IsShFound(ShName) = False Then      'シートが存在するか?      MsgBox "シートが見つかりません" & "/" & ShName      Exit Sub     End If          PageCnt = PageCnt + 1     If PageCnt = 1 Then      ThisWorkbook.Sheets(.Cells(RowCounter, DataCol).Value).Select      PrinGo = Application.Dialogs(xlDialogPrint).Show      If PrinGo = False Then       .Select       Exit Sub      End If     Else      ThisWorkbook.Sheets(.Cells(RowCounter, DataCol).Value).PrintOut _       Copies:=1, Collate:=True, IgnorePrintAreas:=False     End If    End If    .Select    RowCounter = RowCounter + 1   Loop  End With  If PageCnt = 0 Then   MsgBox "シート名の埋まったセルが選択されていません"  End If End Sub Function IsSelect(Rng As Range) As Boolean  If Application.Intersect(Selection, Rng) Is Nothing Then   IsSelect = False  Else   IsSelect = True  End If End Function Function IsShFound(ShName As String) As Boolean  Dim ws As Worksheet  For Each ws In Worksheets   If ws.Name = ShName Then    IsShFound = True    Exit Function   End If  Next ws End Function

akira0723
質問者

お礼

おはようございます。 毎回お世話になりっぱなしです。 朝一で期待通りの動きを確認しました。 一発でカ・ン・ペ・キ!!

akira0723
質問者

補足

これまで教わったすべてのVBAコードを仕込んだBookを「ひな形」にして後任者が新規業務の対応もしやすいようにしました。 とにかくHohopapaさんには感謝の雨あられです。 質問に書いた2番目の課題については相当に面倒な事が分りました。 この課題は1番目の発展形として思いついたもので、1番目が完璧に達成できたので2番目は中止します。 当方にはハードルが高そうなこと、お手数をかける割には有難みが小さいこと、Hohopapaさんの時間と知力の無駄。 と言うことで課題2はコスパが悪いので「没」とします。 今後の当方のHELPに備えてご自愛ください。 本当にありがとうございました。

関連するQ&A

  • エクセルの複数シートの印刷方法

    エクセルの1つのブックに複数のシートがあった場合、その中の選択したシートのみを印刷することは可能なのでしょうか? または、ブック全体を選んで印刷しても、任意のシートは印刷しないようにする方法などあるのでしょうか?

  • エクセルの分割印刷

    エクセル2003の印刷についてなのですが。 1シートで表を作ったのですが、これを任意の範囲を選択して 複数のページに分けて印刷をしたいのでその方法を教えて下さい。 よろしくお願いいたします。

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

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

  • エクセル2000での割り付け印刷について

    エクセル文書をプリントアウトするとき、ブック全体を割り付けで印刷する方法はあるのでしょうか。 1シートにつき、A4・2ページの文書で、全部で約30シートが1つの文書です。 これを、シートごとにA41枚に収まるように印刷したいのですが、割り付けで2ページとし、ブック全体を印刷、というように指定すると、最初のシートだけが割付となり、その後のシートは普通にA4に1ページずつ印刷されます。 複数のシートを選択した状態でやっても、そのとき開いていたページしか割付になりません。 シートごとに開き、プリントアウトするしかないのでしょうか?大変な時間がかかってしまうのですが……。 よろしくお願いいたします。

  • EXCELで複数のシートの印刷の仕方

    教えて下さい。windows98でoffice2000を使用してます。EXCELで複数のシートを5部ずつぐらい印刷したいのですが、思うように印刷されません。教えて下さいm(__)m bookにシートが4枚あります。4枚とも5部ずつ印刷かけたいのですが■印刷設定画面から印刷を「book全体」にして部数を5部にする。■シートを作業グループにして「選択したシート」を選択して部数を5部にする。それぞれ試してみたのですが各シート1枚ずつしか印刷されませんでした。結局分からなくて今は1シートずつ部数を設定して印刷しています。60シートぐらいあるのでとても大変です。何かシートの設定とかあるのでしょうか?教えて下さい。

  • EXCELのマクロでワードファイルを開きたい

    いつもお世話になります。初心者ですのでよろしくお願いします。 WORDで50種類くらいの帳票を作成しました。一つのファイルに50ページあるのではなくて、50のファイルに一つずつ帳票を作成しました。また、EXCELでこれらの帳票の目次を作成しました。これは1枚のシートに50の帳票のタイトルが一覧表となっています。このエクセルの目次シートから必要なタイトルを選択するとそれに該当する帳票のワードファイルが開くようにしたいのですが、マクロでなんとかなりませんでしょうか? EXCEL2000、WORD2000を使用しています。補足、お礼は明日になりますが、よろしくお願いします。 わかりづらい説明で申し訳ありません。

  • 選択した複数ブックのシート1すべてを印刷するには?

    お世話になります。 現在、EXCELにて顧客管理の表を作成しているのですが、ブックの数が顧客人数分の200ほどあります。 それらのシート1に顧客に配布する予約確認表があるのですが、選択した任意のブックのシート1を一度に印刷できないかと思っています。 そこで現在考えている方法は、作成したシート1全体を、外部参照などの方法で新しいブックにリンクさせ、新しいブックにすべての顧客の予約表をいれるのはどうかと考えています。 単なるコピーではダメな理由は、途中で変更があった場合に参照元を変更したら参照先も自動で変更されるようにしたいのです。 これが出来れば通常の印刷のページ指定である程度選択したシートのみ一度に印刷が可能です。 マクロでも結構ですので簡単に全ての参照元のブックのシート全体を新しいブックへ外部参照する方法があれば教えて頂けたらと思います。 もしくは、「指定したフォルダに入っている任意のブックのシート1をすべて印刷する」といったプログラムが出来るならそれでも大丈夫です。 あくまでも目的は任意のブックのシート1を一度に印刷をかけるという事ですので何か良い方法がありましたらお願いいたします。

  • EXCEL マクロ

    エクセルマクロ初心者です。 エクセル2007で、複数選択したセルの合計値・平均値をコピーできないか悩んでいます。作業によって、選択するセルが変わりますので、セル番地の指定をせずにマクロの書くことができますでしょうか。 イメージとしては、複数のセルを選択をしたときに、ステータスバーにオートカルクで表示される合計値・平均値をクリップボードにコピーし、別のセルに結果をペーストする感じ(ペーストする際に合計値・平均値のどちらを貼り付けるか選択できれば尚、良)です。 個人用マクロブックに登録して、不特定ブックで使用したいマクロです。よい方法があれば教えて下さい。

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

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

  • エクセル上の縦長の表を特定の範囲で複数のシートに分ける方法を教えて下さ

    エクセル上の縦長の表を特定の範囲で複数のシートに分ける方法を教えて下さい。 当方、下請けの仕事でエクセルの資料をお借りしたのですが 同じ表(A4サイズの印刷設定有り)が縦に並んでおり 1シートに10ページから25ページの表があります。 ファイルも7ブックあり、1ブックに2シートのものや、4シート、5シートのブックもあります。 普段は下請けも少なく自社のデータで仕事しているのですが 仕事上、データを更新するのに1日に3、4ページ分の表しか更新しませんし 更新作業の入力も外注に発注しているので、データの確認や 必要な表のページ数を指定して印刷など、非常に手間が掛かってしまいます。 ひとつひとつ切り取り、貼り付けをしていましたがこれも手間が掛かってしまいました。 マクロの知識がないのですが、マクロで解決できないでしょうか。 使用しているのはExcel2003です。 借りた資料の表は1ページが 「9列・31行」のA4縦サイズが縦に繋がって並んでいます。 宜しくお願い致します。