フォームまたはActivexコントロールを使ってシートを印刷する方法

このQ&Aのポイント
  • マクロを使用して、特定の条件に基づいてチェックボックスが選択されたシートを印刷する方法について教えてください。
  • あるブック「A」の特定の列の文字列と一致するブック「B」内のシートにチェックを入れ、印刷プレビューで選択したシートをまとめて表示する方法について教えてください。
  • フォームまたはActivexコントロールを使用しない方法で、特定の列の範囲内の文字列と一致するシートを選択し、印刷プレビューで表示する方法について教えてください。
回答を見る
  • ベストアンサー

フォームまたはActivexコントロールのチェックボックスを使って、チェックされたシートを印刷するということをしたいのですが

マクロの勉強は日々しておりますが、どうしてもわからないことがあります。 あるブック「A」にシート(”集約”)があります。また、別ブック「B」にはコード別に分かれたシートが複数あります。(コード別に分かれたシートのシート名はコードとなります。) ブック「B」のコード別シートにはそれぞれ、右上にマクロのチェックボックスを設けています。 まず、ブック「A」シート("集約")の列4(項目はコード)の文字列と一致する、ブック「B」内シート名のシートに、チェックを入れそのチェックされたシートをまとめて印刷プレビューで出すということがしたいのですが・・・。 また、シート("集約")列4の行範囲は指定して、それぞれコード別シートを選びたいのです。 必ず、チェックボックスを使用しなくてはならないわけではありません。もしシート("集約")で指定した列4の範囲内のコードと一致する別ブック「B」内のシート名のシートを選択して、印刷プレビューにまとめて出せるのであれば、それでかまわないのですが、何度やってみてもうまくいきません。 知識のある方のお力をお借りしようと思い、質問させていただきました。 教えていただければ、幸いです。よろしくお願いします。

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

  • ベストアンサー
回答No.1

要点だけですが参考になれば。 (Book1, Book2が両方とも開かれていることを前提としています。) ■他のワークブックのシートを列挙する方法 [ Book1から実行 ] ' Book2のシートを列挙 Dim objSheet As Worksheet For Each objSheet In Windows("Book2").Application.Worksheets Call MsgBox(objSheet.Name) Next ■他のワークブックにある複数のワークシートをまとめて印刷プレビュー。 [ Book1から実行 ] ' Book2のSheet1とSheet3の印刷プレビューを表示 Dim objSheets As Sheets Dim strSheets(1) As String strSheets(0) = "Sheet1" strSheets(1) = "Sheet3" Set objSheets = Windows("Book2").Application.Worksheets(strSheets) Call objSheets.PrintPreview

milktea06
質問者

お礼

ありがとうございました。とても参考になりました。マクロ初心者でまだまだ分からないことがたくさんありますが、その一つの勉強として役立たせていただきます。

関連するQ&A

  • チェックボックスの逆使用がわかりません!

    初めて質問させていただきます。マクロ超初心者です。 エクセル2007を使用しております。 マクロに初めて挑戦し、契約書に差しこんでおります。 うまく説明できないところがあると思いますが、ご了承ください。。。 シート1に契約書に差し込むデータが一覧表として作成してあります。 シート2に契約書のひな型を作成→シート1から契約内容を差し込む 見よう見まねでマクロを作成しました。 ここまではうまくいったのですが、どうしてもわからないところがあります。 シート1  A列  B列  A子  マンション  B子  アパート  C子  戸建  D子  テラスハウス シート2へ差し込み    A列     B列      C列     D列    E列     F列   G列     H列  チェックBOX  マンション  チェックBOX アパート チェックBOX  戸建 チェックBOX B/D/F以外 もし、A子がマンションなら、シート2のA列チェックBOXにレ点が入るようにしたいです。 同様にB子・C子と差し込んだときに、一致するBOXにチェックが入るといったものにしたいです。 この説明で、お分かりいただけましたでしょうか? どうか、お願いいたします。

  • VBA チェックボックスをチェックした名前のみ抽出

    数百名のリストからチェックした名前のみ抽出したいと思いまして。 1.シート1のA、C、E…奇数列にフォームのチェックボックスを配置 2.B、D、F…偶数列に名前を並べる 3.チェックボックスでクリックし、チェックマークが出る 4.マクロでSheet2のA列から抽出された名前を並べる 宜しくお願いします。

  • チェックボックスにマクロを入れて印刷する

    チェックボックスにマクロを入れて印刷するやり方について ご教授いただきたく、質問させていただきます。 シート1   A   B   C    D 1  あ  ●  TRUE  レ 2  い  ×  FALSE 3  う  ▲  TRUE  レ エクセルで上記のシートA1,B1にデータを入力し、 Dにあるチェックボックスにチェックを入れると A1の「あ」をコピーし、シート2のX1にペーストして VLOOKUPを使ってシート1のB1をA1に表示させ、 印刷したいと思っています。 (もちろん、「あ」と「●」の2項目しかないわけではなく、 1行に8項目あり、シート1では横一列に並んでいるものを、 シート2の見栄えのいいフォーマットで、印刷します。 行数は100行くらいあります。) シート2     A      X  1  ●         あ マクロの記録で、「チェックを入れる→コピー→ペースト→印刷→シート1に戻る」とし、   Application.Run "Book1.xls!印刷" Range("A1").Select Selection.Copy Sheets("Sheet2").Select Range("X1").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("元").Select となりましたが、チェックを入れても動作しなかったため、 「Application.Run "Book1.xls!印刷"」を削除したところ、 正常に動きました。 問題は・・・・    チェックを入れると動作する(^_^)    チェックを外す時も動作する(T_T)    1個のチェックボックスにマクロは設定できたけれど、    100行あったとしたら、100個のチェックボックスを作成し    1個1個マクロを記録させる?まとめてはできない?    チェックボックスをコピー&ペーストしたところ、    うまくいきませんでした。    (チェックを入れると印刷という動作でOKで、     チェックをあらかじめ入れておき、最後に印刷ボタンで     印刷するというやり方ではありません。     VLOOKUPを使っているので、無理ですよね(・_・;)) 初めてのチェックボックスですが、途中まで簡単にできた!と思ったけど、つまづいてしまいました。 色々調べたのですが、素人同然の私には難しくご質問させていただきました。 皆様お忙しいと思いますが、宜しくお願いいたします。                

  • VBAでのチェックボックスの自動作成

    今、ワークシートに入れてあるリストを、インプットボックスでワークシートで指定して読み込ませて処理しています。 今後、複数のリスト(ワークシート)を指定する為、ワークシートの数(ワークシート名も入力して)だけユーザーフォームに自動でチェックボックスを作成するマクロを作りたいと考えています。 ワークシートの数の取得、ワークシート名の取得方法、チェックボックスの値の取得方法はわかりましたが、ワークシートの数だけ、チェックボックスを適当なサイズで自動生成する方法がわからず困っています。 長いコードになると思いますが、よろしければコードも含めて教えてください、よろしくお願いします。

  • マクロの組み方とチェックボックスに関して

    【マクロ】の設定とチェックボックスを一括ではずす方法 1.マクロは新しいマクロの記録しか使ったことがないのですが、以下のことをやるとうまくいきません。 ・「目次」というセル以外を選択 ・B列を選択し、「ジャンプ」→「セル選択」→空白セルにチェックマーク ・「書式」→「行」→「表示しない」 以上のことをマクロに記録したいです。 マクロでなければうまく反映したのですが、新しいマクロの記録からだとうまく行きません>< 2.チェックボックスを一括(全シート)ではずす方法がありましたら教えて下さい!! ツールバーから作ったので図形のようになっていて、全シート選択すると○になってしまい選択できないのです。。

  • チェックボックスに連動した他シートの参照

    以前も似たような質問をしたのですが、以下のようなことは可能でしょうか? S1シートの該当のチェックボックスにチェックを入れるとその行のデータがS2シートに表示される。 下の例では、B、D列のデータがS2シートのA,B列に表示される。 [S1]| A | B | C | D | E | - - - -- - - - - - - - -  1 | あ | い | う | え | □ |←チェックボックス1 - - - -- - - - - - - - -  2 | お | か | き | く | □ |←チェックボックス2 - - - -- - - - - - - - -  3 | け | こ | さ | し | □ |←チェックボックス3 - - - -- - - - - - - - -  4 | す | せ | そ | た | □ |←チェックボックス4 - - - -- - - - - - - - - 【1】 ○チェックボックス1と3にチェック [S2]| A | B |  - - - -- - -  1 | い | え |  - - - -- - -  2 | こ | し |  - - - -- - -  3 |   |   |  - - - -- - -  4 |   |   |  - - - -- - - 【2】 ○チェックボックス2と3と4にチェック [S2]| A | B |  - - - - - -  1 | か | く |  - - - - - -  2 | こ | し |  - - - - - -  3 | せ | た |  - - - - - - ○上記状態でチェックボックス3のチェックをはずす  [S2]| A | B |  - - - - - -  1 | か | く |  - - - - - -  2 | せ | た |  - - - - - -

  • ユーザーフォームチェックボックスの値をセル入力

    ユーザーフォームのチェックボックスでチェックされたCaption文字をExcelシート範囲(B2:B9)の入力されている文字の最後尾から続けて入力したいのですがどなたかコードが解る方よろしくお願いします。

  • チェックボックスに関して(vba)

    VBA初心者のためコードを教えてくれますと助かります。 シート1にリストが記載されています。 チェックボックスで選択されている値を取得して(シート1のA列の商品名から)、チェックされている値のデータを転記するようなコードを作成したいと思っております。(別途シート追加する) 知識不足でうまく動きません。よろしくお願いします。

  • 開いているシートをチェックする

    いつもこちらでお世話になってます。 VBAで、ひとつのブックの開いているシートをチェックする方法を教えてください。 "sheet1" "sheet2"  "sheet3" と同じブックにあるとし、 "sheet1"を開いてマクロを実行したら、 「シート1です」とメッセージボックスを出し、"F4"を選択。 "sheet2"を開いてマクロを実行したら、 「シート2です」とメッセージボックスを出し、"G4"を選択。 "sheet3"を開いてマクロを実行したら、 何もしない。 というようなコードをどうすればいいいのでしょうか? 自分なりに試してみたのは、以下のようなものです。 ' Macro () If Sheets("sheet1").Activate Then MsgBox "シート1です"   Sheets("sheet1").range("f4").select End If If Sheets("sheet2").Activate Then MsgBox "シート2です" Sheets("sheet2").range("g4").select End If End Sub これだと、どのシートを開いていても、 "sheet1"が開いて、"シート1です" のメッセージが出て、OKを押すと、"F4"を選択し、そのまま "sheet2"が開いて、"シート2です" のメッセージが出て、OKを押すと、"G4"を選択してし、 "sheet2"が開いた状態になってしまいます。 今現在は、2つのマクロが別々にあります。 マクロのオプションでCtrl+半角キーを同じにしたい、と考えています。 マクロのオプションで同じ半角キーをすることはできるようなのですが、 そうすると、Private Sub Worksheet_Activateで "sheet1"が開いたときは"E4"を選択するようにしているので、デバックが出てしまいます。 どのようにすればいいのでしょうか?

  • エクセル2003VBA チェックボックスについて

    エクセル2003VBA チェックボックスについての質問です よろしくお願いします。    A         B 1 あああ       □ 2 いいい       □ 3 ううう        □ . . . . 35 かかか      □ 複数のチェックボックスをB列に配置し、 B1がオンになるとbook1を開く B2がオンになるとbook2を開く ・ ・ B35がオンになるとbook35を開く処理を行いたいのですが、 非常にコードが長くなってしまいます。 以下のコード以外で、 どのチェックボックスがオンになっているかを調べる方法が知りたいのですが、よろしくお願いします。 Private Sub CheckBox1_Click() book1を開く処理 End Sub Private Sub CheckBox2_Click() book2を開く処理 End Sub ・ ・ ・ Private Sub CheckBox35_Click() book35を開く処理 End Sub

専門家に質問してみよう