質問: excelで最初に開いたファイル名称を覚えておく様な処理は可能ですか? excelで最初に開いたファイル名称を覚えておく様な処理は可能ですか? 1.最初の処理 (1)a.xlsのファイルを開く (2)マクロ:2010.xlsのファイルを開く (3)マクロ:チェックのシートをa.xlsの明細のシートの前に追加 (4)マクロ:チェックのシート名称をコピーした日付と時間のシート名に変更 (5)マクロ:2010.xlsのファイルをディスクトップ上から削除 2.後から追加する処理 (6)b.xlsのファイルを開く (b.xlsは、a.xlsとは異なるフォルダを作成し、a.xlsの特定のセルの中身の名称でファイル名保存されます。名前が異なるだけでマクロの中身はa.xlsと同じ) (7)マクロ:2010.xlsのファイルを開く (8)マクロ:チェックのシートをb.xlsの明細のシートの前に追加 (9)マクロ:チェックのシート名称をコピーした日付と時間のシート名に変更 (10)マクロ:2010.xlsのファイルをディスクトップ上から削除 上記を対応する為に下記の様なマクロ((6)(7)の部分を抜粋)を設定しています。 '2010.xlsのファイルを開く(2010.xlsのファイルは適宜、ディスクトップにコピーされます) workbooks.open filename:="c:\documents and settings\id\デスクトップ\2010.xls" 'チェックのシートを現在のブックの明細の前にコピーする。 windows("2010.xls").activate sheets("チェック").copy before:=workbooks(1).sheets("明細") 単独でa.xlsやb.xlsのファイルが開かれている場合には、 上記の対応で問題ないのですが、a.xls、b.xls以外のexcelファイルが開かれていると、 実行時エラーが出てしまいます。 workbooks(1)の部分で最初に開いたexcelのファイル名称を指定しているのが 影響しているのはわかるのですが、ここの処理をなんとかしたいというおもいです。 つまり、複数のexcelファイルが開かれていて、a.xlsやb.xlsのファイルを後から開いても エラーがでない様にするには、どの様な処理にしたらよいのか教えて頂きたく。 マクロを実行したexcelのファイル名を覚えておいて、その名前が(1)に置き換わる 様な処理が望まれる処理です。
回答: >チェックのシートを現在のブックの明細の前にコピーする。 >windows("2010.xls").activate >sheets("チェック").copy before:=workbooks(1).sheets("明細") "現在のブック" が当マクロが書かれているブックなら sheets("チェック").copy before:=thisworkbook.sheets("明細")