質問: ### 前提・実現したいこと VBA初心者です。 下記のマクロを組んでいます。 A.xlsm 内のボタンを押すと、B.xlsx を開き、B内のシートbをAにコピーし、Bは閉じる。 bに記載されている情報を用い、Aは計算を行い、A内のシートaを書き換える。 処理が終われば、シートbは削除する。 現在、問題なく動いてはいるのですが、Aを複数作成しようとしたときにメンテナンス性がひどく悪いと考え、うまく、この問題を解決できないかなと考えています。 ### 試したこと 新たに、X.xlsm を用意し、A.xlsm に記述していた処理を移管。 Aからは、Xの処理を呼び出すのみ。 ここまで書いて、以後、どうすべきか困っています。 Xはあくまで、処理コード共通化のために存在するので、これまで通り、シートbのコピー先はA、ファイル更新先もAとしたいのですが、別ブックへシートをコピー、ならびに、ファイル更新(セルの内容書き換え)は可能でしょうか? 当初、Xに、B内のシートbとA内の更新対象シートaをコピーし、処理が終われば、bはそのまま削除、書き換え後のaはAにコピーするが、同名のシートが存在するので、A内のaを削除した上でコピー、その後、X内のaも削除するという方法も考えましたが、結局、ここでも「別ブックへのシートコピー」、また、「別ブックのシート削除」が発生すると考え、だったら、先述の方法がシンプルだなと考えた次第です。 もし、上記2つの方法ともに不可能な場合、どのような実現方法があるか、教えて頂けますか? ### 補足情報(FW/ツールのバージョンなど) 関係あるのか分かりませんが、Excelのバージョンは2016 32bit です。
回答: B.xlsxを開く際に絶対パスを指定しているなら、作業用のフォルダを用いて相対パスで処理するというのはどうですか。 絶対パス指定と相対パス指定