• 締切済み

VBAセル参照のパスのブック名に汎用性を持たせたい

皆様どうぞ宜しくお願いいたします。マクロ初心者です。 Excel 2003で作業をしております。 今回の仕事で必要なので、大変困っております。 BOOK1とBOOK2を開き、BOOK1のAシートのセル参照をBOOK2でもBOOK2でのセル参照として活かす為、BOOK1のAシートの=をすべて#に置換した後、BOOK2にAシートをコピーし、逆に#を=に戻しました。 ここから後なのですが、BOOK名が特定されてしまうため、汎用性が効きません。 どのようにすればよいのかお教えください。 どうぞ宜しくお願いいたします。 下記マクロコード Cells.Replace What:="=", Replacement:="#", LookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Sheets("店頭").Select Sheets("店頭").Copy Before:=Workbooks("ここの部分です.xls").Sheets(3) Cells.Replace What:="#", Replacement:="=", LookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False End Sub

みんなの回答

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> ここから後なのですが、BOOK名が特定されてしまうため、汎用性が効きません。 求める「汎用性」とは何? > Sheets("店頭").Copy Before:=Workbooks("ここの部分です.xls").Sheets(3) (1)"ここの部分です.xls"を格納する変数を宣言する。(実行前) (2)この行の"ここの部分です.xls"を変数に置き換えておく。(実行前) (3)この行が実行されるまえに、変数に値(目的のブック名)(実行時) (3)は、どこか特定のセルに記述しておくのもあり。 コードを実行してるブック(ThisWorkbook)に記述しても良いし、 処理中に開いたブックから取得しても良いし。

ymk226
質問者

補足

ご解答ありがとうございます。 汎用性ですが、店頭で出す広告に使用します。 今回広告のレイアウトを全面的に変える事になり、一枚一枚直していては莫大な時間がかかるので、何か方法はないかと考えました。 店頭で出している広告は常時30枚くらいあります。 そしてPCに保存してある広告と定期的に入替えます。 PCに保存してある広告は1000枚以上はあり、今後全て新レイアウトに変更します。 マクロで一括変更できる箇所はしたいと考えました。 現状のコードだと、BOOK名が特定されてしまうので、違うBOOKにはマクロが適用されませんでした。 他のBOOKを開いた時も、現在保存してあるマクロコードが適用されるようにしたいと考えております。 ご解答頂いた内容で不明点がございます。 ネットで変数を調べましたが理解できませんでした。 教えて頂けると助かります。 (1)"ここの部分です.xls"を格納する変数の宣言方法。 (2)この行の"ここの部分です.xls"を変数に置き換える方法。 どうぞ宜しくお願い致します。

関連するQ&A