- ベストアンサー
マクロ
05年A.xlsと06年A.xlsのファイルが有ります、現在は2005年なので05年Aのファイルを使用しています。2006年になったら06年Aのファイル使用します。現在使用している05年Aのファイルは07年Aとファイル名を変更します。2006年になったら現在使用している05年Aのデーターの一部を06年Aのファイルに値複写します、この値複写の操作をマクロで行いたいと思います。マクロの記述文中のファイル名を毎年変更しなくてはいけません、この変更を自動的にする方法はありますでしょうか。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Sheet1/Sheet2 は自身でコピー元とコピー先のシート名に書き換えてください。 変数 NextYearBookName は、セルから取得したブック名が入っているものとします。 Sub Macro1() 'Windows("05A.xls").Activate ThisWorkbook.Activate Worksheets("Sheet1").Range("B5:E10").Copy 'Windows("06A.xls").Activate Windows(NextYearBookName).Activate Worksheets("Sheet2").Range("D5").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False 'Windows("05A.xls").Activate ThisWorkbook.Worksheets("Sheet1").Select End Sub ブック間のコピーに関しては下記が参考になると思います。
その他の回答 (2)
- hana-hana3
- ベストアンサー率31% (4940/15541)
>複写元か、複写先のA1に例えば複写先のファイル名07A.xlsと記載した場合 基本的には、WorkBooks(Range("A1")).Activate などで可能ですが・・・。 これでは、動作があやふや(シートがアクティブになっていない場合には誤動作する)なので、どこかのモジュールにグローバル変数を設定して名前を取得しておけばよいと思います。 Private NextYearBookName As String WorkBook_Open 等で NextYearBookName = ThisWorkbook.Worksheets("設定").Range("A1") ~どこかのマクロ Workbook(NextYearBookName).Activarte 等
補足
何回も質問してすみません。初心者のためよろしくお願いします。下記はマクロの記録で「05A.xls」から「06A.xls」へ値複写したものです。このマクロ文をどのように変更したら良いでしょうか、よろしくおねがいします。 Sub Macro1() Range("B5:E10").Select Selection.Copy Windows("06A.xls").Activate Range("D5").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Range("A3").Select Windows("05A.xls").Activate Range("A3").Select End Sub
- hana-hana3
- ベストアンサー率31% (4940/15541)
>2006年になったら現在使用している05年Aのデーターの一部を06年Aのファイルに値複写します どの値をどこに埋め込むか解れば、簡単に出来ます。 >マクロの記述文中のファイル名を毎年変更しなくてはいけません マクロが書いてあるブックは、ThisWorkbook に書き換えると問題ありません。 翌年なら、西暦年を取得すれば新しいファイル名を参照できますし、シートのどこかに参照ファイル名を記入しておくなどすれば大丈夫でしょう。
補足
ありがとうございます、処で複写元のファイル名はthisworkbookとし、複写先のファイル名が毎年変わるため参照をするとして複写元か、複写先のA1に例えば複写先のファイル名07A.xlsと記載した場合、このファイル名をマクロで参照する記述はどのようになるのでしょうか、よろしくお願いします。
お礼
ありがとうございました。詳しく教えていただき大変助かりました。