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

エクセルマクロの作り方

このQ&Aのポイント
  • はじめまして、エクセルのマクロ初心者です。エクセルのツール→マクロ→新しいマクロの記録にて、開いているシートをA1~V68までをコピーし、別の貼り付け用シートに貼付、3つのタブを印刷して閉じ、開いているシートを表示する内容のマクロを登録しました。
  • マクロを実行すると複製されたシートのA1~V68までではなく、台紙のA1~V68までが印刷されて困っています。解決策を教えてください。
  • マクロの記録の上部を訂正すると良いような気はするのですが、初心者なので範囲の指定の仕方がわるいのでしょうか?訂正部分など教えてもらえると助かります。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.5

#4です。 どのブックの、どこのシートの、どこのセルを、どのブックの、どのシートの、どのセルにコピー&ペーストしたいのか、実行するマクロは何処に書いてあるのか等によって記述は大きく異なるものです。 回答者は少ない記述から環境や状況を予測して書くしかありません。 質問者は自分の環境に置換えて書き直すくらいのスキルが最低限無いと、答えても「上手く動きませんが?」で終了しちゃいます。 どうも説明が不明確なので、他の補足と併せて下記の環境・希望動作と推察して書きました。 試すならば記述の条件をご自身の環境に作って実行して見てください。 1)デスクトップの「日報、点検簿」フォルダに以下の3つの Excelブック がある   日報台紙.xls   平日,日曜、祭日点呼簿.xls   10月分.xls 2)「平日,日曜、祭日点呼簿.xls」には「貼り付け用」「大型1」「大型2」「小型1」というシートがある。 3)Testマクロは「日報台紙.xls」の標準モジュールに記載する。 4)「10月分.xls」と「日報台帳.xls」を同時に開き「10月分.xls」の対象としたいシートをアクティブにした状態でマクロを実行する。 マクロを実行すると「平日,日曜、祭日点呼簿.xls」を開き、「10月分.xls」のアクティブシートのセル A1:V68 をコピーして、「平日,日曜、祭日点呼簿.xls」の「貼り付け用」シートのA1 に貼り付ける。 その後、「平日,日曜、祭日点呼簿.xls」の「大型1」「大型2」「小型1」シートを印刷する。 Sub Test() Dim ws As Worksheet, wb As Workbook  Set ws = ActiveSheet  Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\平日,日曜、祭日点呼簿.xls")  ws.Range("A1:V68").Copy Destination:=Worksheets("貼り付け用").Range("A1")  wb.Worksheets("大型1").PrintOut  wb.Worksheets("大型2").PrintOut  wb.Worksheets("小型1").PrintOut End Sub

prtcw794
質問者

お礼

ありがとうございました。 以上の内容で解決しました!!! これからもっとマクロを勉強すると共に用語も勉強します。 大変助かりました。

その他の回答 (4)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.4

何がしたいのかいまいち理解出来てませんけど、、、 Macro記録は便利ですが、万能ではありません。 シート名やブック名が省略されたりアクティブシートのように記述されるので、複数のブックを操作する場合などは実行中にどこがアクティブになっているかを意識して修正しないとダメです。 「台紙」って言うのがデスクトップの「日報、点呼簿」フォルダにある「平日,日曜、祭日点呼簿.xls」で、「複製されたシート」って言うのは、台紙(平日,日曜、祭日点呼簿.xls)をコピーしたブック内にあるシートの事を意味しているものと想像して回答します。 コピーしたブックが、コピー元と同じ場所にあるなら Workbooks.Open Filename:= _ "C:\Documents and Settings\Administrator\デスクトップ\日報、点呼簿\平日,日曜、祭日点呼簿.xls" ここを Workbooks.Open Filename:= _ "C:\Documents and Settings\Administrator\デスクトップ\日報、点呼簿\コピーしたブック名.xls" とすると希望動作になりますか?

prtcw794
質問者

補足

回答ありがとうございます。 初心者なの者で説明が下手なので容赦してください。 >台紙」って言うのがデスクトップの「日報、点呼簿」フォルダにある「平日,日曜、祭日点呼簿.xls」で、「複製されたシート」って言うのは、台紙(平日,日曜、祭日点呼簿.xls)をコピーしたブック内にあるシートの事を意味しているものと想像して回答します。 台紙というのは同じフォルダの他のブックにあります デスクトップの「日報、点呼簿」フォルダの中の「日報台紙.xls」です。(これにマクロを記録しています) これを基に一ヶ月分、日数分のシートを作っています。例えば、「10月分.xls」という名前のブックの中に1日から31日までの31シート複製しています。 ですからマクロ実行は「10月分.xls」のシート14(14日)でおこないます。 しかし、「日報台紙.xls」で実行して記録したとおり(日報台紙のA1~V68までのセルを選択しコピーする)に動作するので困っています。 「10月分.xls」のシート14(14日)で実行するとシート14のA1~V68までを選択しコピーして、「平日,日曜、祭日点呼簿.xls」に貼り付けしてほしいのです。 以上の場合はどうなりますでしょうか??? お手数ですがもう一度回答おねがいできますでしょうか?? >Macro記録は便利ですが、万能ではありません。 >シート名やブック名が省略されたりアクティブシートのように記述さ>れるので、複数のブックを操作する場合などは実行中にどこがアクテ>ィブになっているかを意識して修正しないとダメです。 確かにそうみたいですね…。勉強になりました。

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.3

ActiveSheet.Paste のあとに ActiveSheet.Parent.Activate 入れてみてください 1つ確認ですが 複製されたBookに 大型1 とかの シートはありますか?

prtcw794
質問者

補足

ありがとうございます。 さっそく試してみようと思います。 >1つ確認ですが 複製されたBookに 大型1 とかの シートはありますか? はい。\デスクトップ\日報、点呼簿\平日,日曜、祭日点呼簿.xlsブックの中に、貼り付け用、大型1、大型2、小型1の4シートあります。 \デスクトップ\日報、点呼簿\の中に「日報台紙」というブックがあり、そこで作成したシート(マクロ)を基に10月分.xlsというブックを作成しています。 \デスクトップ\日報、点呼簿\10月分.xlsというブックのシートをコピーして、\平日,日曜、祭日点呼簿.xlsの貼り付け用というシートにまず貼り付けてこの三枚のシートを印刷します。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

もいちょっと質問表現に気を使ったほうが良い。 ーー ブック 質問関連のブックはいくつ話題にしているの? ーー シート A1からV68は何なの=>シート名のこと。 V68列はないからシート名のことか。 >すべての範囲でもOKです とはなにのこと? >別の貼り付け用シートに貼付 シートはいくつコピーしするの? 現在ある特定のシートにコピーしないとダメなの? キーとのコピーを作成するではだめなの? >3つのタブを印刷して 開いている 3つの特定のシートのこと?その場合そういう表現をしないとおもうよ。 >つのタブを印刷して閉じ、開いているシートを表示する 印刷したシートは閉じるの?シートを閉じるとは? >、開いているシートを表示する この意味不明。シートをひらくとは。開くとはアクチブにすること? 表示しなくてもアクチブにすれば、あらわれるよ。 >台紙で以上のマクロを 「台帳」ってシート名ですか・なぜ前触れも無く突然出てくるの。 >、台紙で以上のマクロを登録し台紙を複製しました。 台帳がブックなら判るが、シートにマクロを登録し、はありえないし それだけ複製(コピー張り付け?)するってありえないのでは。 ーー セル範囲 言及なし?? ーー ボタンをマクロで作っているが。 質問分では言及なし。 ーー 以上質問分の海洋と、マクロのコードは余り関係が見られない。 ======= 少し考えると 質問にはコード以前の記述は掲載する必要が無かったのでは。 ======= 3シートを印刷したい?? マクロコード上でその3シートの選択はプログラムのなかで呈したいのですね ーー 私の場合下記はうまく印刷するようです。 印刷以外何がしたいのでしょうか。 「大型1」等の印刷した結果が、思ったとおりでないのですか・ Sub test01() Sheets("Sheet1").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("Sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("sheet3").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True ActiveWindow.Close End Sub

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

掲載されたマクロをあまり詳しく見ていませんが、ActiveSheet.Paste~ActiveWindow.Closeの箇所を以下のようにしてみたらいかがでしょうか。印刷するシート名を明示してみました。 ActiveSheet.Paste Application.CutCopyMode = False Sheets("大型1").PrintOut Copies:=1, Collate:=True Sheets("大型2").PrintOut Copies:=1, Collate:=True Sheets("小型1").PrintOut Copies:=1, Collate:=True ActiveWindow.Close

prtcw794
質問者

補足

回答ありがとうございます。 ためしてみたのですが、ダメでした。 印刷はするのですが、台紙のデータが印刷されてしまい、複製したシートのデータは印刷されません。元のままです。 ”開いているシートを選択しコピーする”様に設定できれば良いとは思うのですが…

関連するQ&A