- 締切済み
別のエクセルファイルの値をコピーをしたいです
別のエクセルファイルの値をコピーをしたいです。 現在、仕事でファイルAにファイルBの値をコピーペーストをする作業を行っております。 しかし、量が多いのでいちいちファイルを開いてコピーして貼り付けという作業は時間がかかるのでマクロでやりたいと考えています。 そこで教えてほしいのですが、以下のような操作をマクロでするにはどうしてらよいのでしょうか? 1.ファイルAの列範囲F~J、行は9から下にファイルBの値をコピーしたい。 2.コピーするファイルBの値の範囲は、列E~I・行は1から下。 3.コピーするファイルBの行は毎日更新されるため、行の範囲は不特定です。 つまりは 昨日のファイルBの行は10まであり、マクロを実行するとファイルBのE1~I1からE10~I10の値がファイルAのF9~J9から下にコピーされる。 今日のファイルBの行は4まであり、マクロを実行するとE1~I1からE4~I4の値がファイルAのF9~J9から下にコピーされる。 という操作をマクロで実行したいと思っております。 また、ファイルBの名前も不特定のため、ファイルはダイアログで指定し、指定したファイルのE1~I1から下の値をコピーできるようにしたいです。 毎日の作業ですので、これが出来れば効率はぐっと上がります。 わかる方、どうか回答宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yy_kd
- ベストアンサー率25% (5/20)
文面を見るとFile A も File Bと同じだけの数量があって、Bの特定範囲を Aにコピーペーストするように見受けられます。 それなら、マクロだけの別Bookを作って、AとBのFile名のリストを作っておいてマクロでA、Bを開いてBの範囲をコピー、Aに貼り付け AをSave、Close、Bをクローズを繰り返すか、又はFile A と File B がFolderが別で同じFile名ならば全自動化が可能ですね・・
- mar00
- ベストアンサー率36% (158/430)
>ファイルBの名前も不特定のため、ファイルはダイアログで指定し マクロをファイルBに記録しておく。 何も入力していないファイルBを作っておいて入力後、名前をつけて保存するか 既に保存してあるファイルBをクリアして入力後、名前をつけて保存する。 この方法で行えばダイアログで指定する必要はありません。 Sub Macro1() Dim FILEA As String FILEA="A.xls" Workbooks.Open Filename:="C:\*****\*****\*****\" & FILEA Range("F9:J" & Cells(Rows.Count, 6).End(xlUp).Row).ClearContents '(1) Windows(ThisWorkbook.Name).Activate Range("E1:I" & Cells(Rows.Count, 5).End(xlUp).Row).Copy Windows(FILEA).Activate Range("F9").Select ActiveSheet.Paste Application.CutCopyMode = False ActiveWorkbook.Save Windows(ThisWorkbook.Name).Activate End Sub ****の部分はファイルAの保存してあるフォルダを指定してください。 (1)は前日分をクリアしています。 FILEA="A.xls"のA.xlsのAの部分をファイルAの名前に変更してください。
お礼
回答ありがとうございます。 ただ、私の説明がたりませんでしたね、すみません。 ファイルBは毎日会社の共有フォルダに新たにアップされます。 そのためどうしてもファイルAでマクロを起動してダイアログでファイルBを指定する必要があります。