質問: excelvbaで同一フォルダー内のブックの一番左のシートをコピーしたいです。 excelvbaで下記動作をさせたいです。 1「作成」というブック名のexcelファイル( xlsx)があります。作成のexcelファイルは原紙というシートのみあります。それと同一フォルダー内に適当な名前が付いたexcelファイル(xlsx)がいくつかあります。 2作成を開きマクロを実行すると、適当な名前が付いたexcelファイルの一番左側のシートが作成のexcelファイルへ移動します。移動した後のシート名は1、2、3、4、5、6・・・と連番とします。シート構成は、原紙、1・2・3というようになります。
回答: 以下のような物はいかがでしょうか? ※「作成.xlsx」が閉じている状態で実行して下さい。 ※ 適当な名前の、excelファイル(xlsm)に書き込んで実行して下さい。 sub sample() const 作成ファイル名 as string = "作成.xlsx" dim パス名 as string dim シート番号 as long dim ファイル名 as string dim 処理済 as boolean パス名 = thisworkbook.path & "\" workbooks.open filename:=パス名 & 作成ファイル名 application.displayalerts = false do until workbooks(作成ファイル名).sheets.count = 1 sheets(2).delete loop application.displayalerts = true ファイル名 = dir(パス名 & "*.xlsx") do while ファイル名 <> "" if ファイル名 <> 作成ファイル名 then workbooks.open filename:=パス名 & ファイル名 シート番号 = シート番号 + 1 sheets(1).copy after:=workbooks(作成ファイル名).sheets(シート番号) activesheet.name = シート番号 windows(ファイル名).close ファイル名 = dir() else if 処理済 then exit sub else 処理済 = true end if end if loop end sub