dポイントプレゼントキャンペーン実施中!

はじめまして エクセルのマクロ初心者です。

ツール→マクロ→新しいマクロの記録にて
開いているシートをA1~V68まで(すべての範囲でもOKです)をコピーし、別の貼り付け用シートに貼付、3つのタブを印刷して閉じ、開いているシートを表示する。という内容のマクロを登録しました。

台紙で以上のマクロを登録し、台紙を複製しました。
マクロを実行すると複製されたシートのA1~V68までではなく、台紙のA1~V68までが印刷されて困っています。

どうすれば解決するでしょうか???詳しい方おしえてください。
尚、下記に記録されたものを載せておきますので、訂正部分など教えてもらえたら助かります。
(マクロの記録の上部を訂正すると良いような気はするのですが…。初心者なのもので範囲の指定の仕方がわるいのでしょうか???)
よろしくお願いします。



Sub マクロ名()
'
' マクロ名 Macro
' マクロ記録日 : 2007/10/14 ユーザー名 : ???
'

'
Application.Run "hozon1.初期"
Range("A1:V68").Select
Selection.Copy
ChDir "C:\Documents and Settings\Administrator\デスクトップ\日報、点呼簿"
Workbooks.Open Filename:= _
"C:\Documents and Settings\Administrator\デスクトップ\日報、点呼簿\平日,日曜、祭日点呼簿.xls"
Cells.Select
ActiveSheet.Buttons.Add(509.25, 1.5, 72.75, 12.75).Select
ActiveSheet.Paste
Sheets("大型1").Select
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("大型2").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("小型1").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
ActiveWindow.Close
ActiveWindow.SmallScroll Down:=-51
Range("J3").Select
End Sub

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございました。

以上の内容で解決しました!!!

これからもっとマクロを勉強すると共に用語も勉強します。
大変助かりました。

お礼日時:2007/10/15 12:05

何がしたいのかいまいち理解出来てませんけど、、、



Macro記録は便利ですが、万能ではありません。
シート名やブック名が省略されたりアクティブシートのように記述されるので、複数のブックを操作する場合などは実行中にどこがアクティブになっているかを意識して修正しないとダメです。

「台紙」って言うのがデスクトップの「日報、点呼簿」フォルダにある「平日,日曜、祭日点呼簿.xls」で、「複製されたシート」って言うのは、台紙(平日,日曜、祭日点呼簿.xls)をコピーしたブック内にあるシートの事を意味しているものと想像して回答します。

コピーしたブックが、コピー元と同じ場所にあるなら

Workbooks.Open Filename:= _
"C:\Documents and Settings\Administrator\デスクトップ\日報、点呼簿\平日,日曜、祭日点呼簿.xls"

ここを

Workbooks.Open Filename:= _
"C:\Documents and Settings\Administrator\デスクトップ\日報、点呼簿\コピーしたブック名.xls"

とすると希望動作になりますか?

この回答への補足

回答ありがとうございます。
初心者なの者で説明が下手なので容赦してください。

>台紙」って言うのがデスクトップの「日報、点呼簿」フォルダにある「平日,日曜、祭日点呼簿.xls」で、「複製されたシート」って言うのは、台紙(平日,日曜、祭日点呼簿.xls)をコピーしたブック内にあるシートの事を意味しているものと想像して回答します。

台紙というのは同じフォルダの他のブックにあります
デスクトップの「日報、点呼簿」フォルダの中の「日報台紙.xls」です。(これにマクロを記録しています)
これを基に一ヶ月分、日数分のシートを作っています。例えば、「10月分.xls」という名前のブックの中に1日から31日までの31シート複製しています。
ですからマクロ実行は「10月分.xls」のシート14(14日)でおこないます。
しかし、「日報台紙.xls」で実行して記録したとおり(日報台紙のA1~V68までのセルを選択しコピーする)に動作するので困っています。
「10月分.xls」のシート14(14日)で実行するとシート14のA1~V68までを選択しコピーして、「平日,日曜、祭日点呼簿.xls」に貼り付けしてほしいのです。




以上の場合はどうなりますでしょうか???
お手数ですがもう一度回答おねがいできますでしょうか??

>Macro記録は便利ですが、万能ではありません。
>シート名やブック名が省略されたりアクティブシートのように記述さ>れるので、複数のブックを操作する場合などは実行中にどこがアクテ>ィブになっているかを意識して修正しないとダメです。

確かにそうみたいですね…。勉強になりました。

補足日時:2007/10/14 22:44
    • good
    • 0

ActiveSheet.Paste


のあとに
ActiveSheet.Parent.Activate
入れてみてください

1つ確認ですが 複製されたBookに 大型1 とかの
シートはありますか?

この回答への補足

ありがとうございます。

さっそく試してみようと思います。

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

補足日時:2007/10/14 22:55
    • good
    • 0

もいちょっと質問表現に気を使ったほうが良い。


ーー
ブック
質問関連のブックはいくつ話題にしているの?
ーー
シート
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
    • good
    • 0

掲載されたマクロをあまり詳しく見ていませんが、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

この回答への補足

回答ありがとうございます。

ためしてみたのですが、ダメでした。

印刷はするのですが、台紙のデータが印刷されてしまい、複製したシートのデータは印刷されません。元のままです。

”開いているシートを選択しコピーする”様に設定できれば良いとは思うのですが…

補足日時:2007/10/14 16:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!