すぐに役立つエクセルVBAマクロ集 すぐマク
すぐに役立つ Excel VBA マクロ集 Excel VBA Macro
FAQ
Google
 
Home |  What's New! |  Gallery |  Introduction |  Service |  Profile 500連発・組み方講座フォロー Big Color Pallet
[広告]
Excel VBA Macro
Excel DownLoad
© 1997 - 2007
永井善王.
All RightsReserved.
HappyTech & Co., Ltd.
www.happy500z.com
Excel VBA Macro ・ コピー ・ FAQ
ブック名やコピー先を変数で指定するには?
Question 28.2 Previous Next
今勉強中です。質問は、セルの内容をマクロ内で使用したい場合の書き方です。例えば、
1) セルの名前で、あるシートを保存する。シートの保存自身は、自動記憶でも出来ますが・・・
2) シート1のある範囲を、シート2のあるセルにコピーしたい場合で、 シート2のセルを任意に変更したい場合は、マクロをどう書けばよいでしょうか。 コピー自身は自動記憶でも出来ますが・・・
宜しく御願い致します。
Answer   Copyright (C) 2000.5.9 永井善王
変数で指定する方法を知りたいのですね。
講義 この「すぐに役立つエクセルVBAマクロ集」には、
変数名で範囲指定して選択するには? のページがあります。
そこに掲載されている
「印刷枚数を変数で指定する方法」と、
「シート名と貼り付け位置を変数で指定する方法」を見ていただければわかるかと思いますが、 「今勉強中」ということですので、あらためて、まとめておきます。
1) ブック名を変数で指定して保存するマクロ

最初に確認しておきますが、質問の「セルの名前で … 保存する」の言葉の意味は、「セルに入っている文字列をブックの名前にする」 と解釈してよいでしょうか。 それとも、「セルに付けられている名前」と解釈すべきでしょうか。
ここでは素直に、前者として回答を進めます。
それと「シートを保存する」とあるのは、「ブックを保存」と解釈します。

ブックを保存するマクロは、 [Macro] - [ブックシート] のページに 「ブックを保存する、閉じる」 として掲載されていますが、関係部分を次に抜き出しておきます。
'=========================================================================================
Sub アクティブブックを名前を付けて保存する()
    ActiveWorkbook.SaveAs "BBB.xls"             '※1
End Sub
'-----------------------------------------------------------------------------------------
このマクロの "BBB.xls" の部分を変数におきかえると、次のとおりです。
    ActiveWorkbook.SaveAs ブック名
セルの値を取り出すマクロは、 [Macro] - [値の出入・基本型] のページに 「セルの値を取り出す」 として掲載されていますが、関係部分を次に抜き出しておきます。
'=========================================================================================
Sub アクティブシートのセルの値を取り出す()
    Windows("BBB.xls").Activate                 'ブックをアクティブにする ※1
    Sheets("SSS").Select                        'シートを選択する ※2
        年 = Cells(2, 1)                        'A2セルの値を取り出す ※3
        月 = Cells(2, 2)                        'B2      〃          ※3
        日 = Cells(2, 3)                        'C2      〃          ※3
End Sub
'-----------------------------------------------------------------------------------------
このマクロを見習って次の 1行目のように作り、上のマクロと組み合わせましょう。 名前を取り出すセルは、とりあえず A2セルとして進みます。
    ブック名 = Cells(2, 1)                      'A2セルの値を変数「ブック名」に取り出す
    ActiveWorkbook.SaveAs ブック名              'アクティブブックを名前を付けて保存する

2) 貼り付けるセルを任意に変更する方法

最初に説明した
変数名で範囲指定して選択するには? のページの 「シート名と貼り付け位置を変数で指定する方法」のとおりですが、もう1つ例示しておきます。

次のマクロは、 [Macro] - [コピー] のページに 「クリップボードを経由せずにコピーして貼り付ける」 として掲載されているものです。
'-----------------------------------------------------------------------------------------
Sub クリップボードを経由せずにコピーして貼り付ける()
    Sheets("SSS").Range("A1:C3").Copy _
	destination:=Sheets("SS2").Range("A4") '※1,2,3,4
End Sub
'=========================================================================================
このマクロは、"SSS"シートの A1:C3セル範囲をコピーして 、"SS2"シートの A4セルに貼り付けます。
あなたの希望との相違点は、(1)シート名が違うことと、(2)セルを任意に変更したいことですね。

マクロを次のように修正して、変数「貼り付け範囲」に任意のセルを設定すれば、よいでしょう。
'=========================================================================================
Sub クリップボードを経由せずにコピーして貼り付ける()
    コピー範囲 = "A1:C3"
    貼り付け範囲 = "A4"
    Sheets("Sheet1").Range(コピー範囲).Copy _
	destination:=Sheets("Sheet2").Range(貼り付け範囲)
End Sub
'=========================================================================================