• 締切済み

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

  • SearchFormatやReplaceForma

    エクセルでマクロの記録をしたら Sub Sample() Cells.Replace _ What:="a", _ Replacement:="b", _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchCase:=False, _ SearchFormat:=False, _ ReplaceFormat:=False End Sub のように取得されて、一つ一つの引数を確認したいのですが、 http://www.moug.net/tech/exvba/0050117.html を見ても SearchFormatやReplaceFormatについての説明がないのですが これらについての説明を見るにはどうすればいいでしょうか? というか、なんでリンク先にはこれらの説明がないのですか? あまり使わないプロパティ?だからでしょうか?

  • excelのvbaを使って日付を置換したいのです

    こんにちは。いつも質問ばかりですみません。 今、excell の VBAの勉強をしているのですが、たとえば、B列に2004/5/3 とか、2004/5/5とか、5月の日付ばかりはいっていたとして、その2004/5の部分を2004/6に置換したいとします。 それを、マクロでやらせてみて、VBAを見ると Sub Macro9() Cells.Replace What:="2004/5", Replacement:="2004/6", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub のようになるのですが、このプロシージャーを実行しても、うまく置換できません。 どのように記述したら、できるのか、教えていただけるとうれしいです。 よろしくお願いいたします。

  • 置換(検索場所に「ブック」を指定した)

    vbaでわからないので教えてください。 手作業なら可能ですが 何回も行なうのでマクロを組みたいのですが Sub 置換() Cells.Replace What:="スッキリ", Replacement:="すっきり", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub のコードのどこに「検索場所」が書かれているのでしょか? 前回、シート単位で置換した後、上記のコードを実行すると、 またシート単位での置換になってしまいます。 検索場所を「ブック」にするコードを教えてください!ご教授よろしくお願い致します。

  • エクセル2003で特殊文字の置換方法

    エクセル2003、XPを使用しています。 エクセルのマクロで置換をしているのですが、 置換対象がCHAR(160)です。 セル上に上のを打ち込むと、実際は違いますが半角スペースに見えます。 特殊文字であっているのでしょうか。 それで、この文字を消したいと思い、以下の通りマクロで記述しているのですが、成功しません おわかりになる方いらしたらよろしくお願いします。 Cells.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

  • エクセルの置換の検索場所に「ブック」を指定し置換

    エクセルの置換の検索場所に「ブック」を指定し置換するには? 過去ログを見たのですが http://okwave.jp/qa/q5268557.html シートをループするしかないのでしょうか? Sub Macro2() Cells.Replace What:="aaaa", Replacement:="zzz", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Sub のように、シート全体にするかブック全体にするかのプロパティは存在しないのでしょうか?

  • エクセルでマクロを使用しての置換

    マクロ初心者です。 データを変換するシステムをマクロで作成していますが、 自分のPCではちゃんと実行できるのに、お客さんのPCで実行するとエラーが出てしまいます。 エラーが出る部分は、どうも置換するところらしく、 Selection.Replace What:="<BR>", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False ここが黄色く表示されるそうです。 どこを直せばよいですか?

  • EXCEL 違う端末でマクロエラー

    私の端末で正常に作動したEXCELのマクロが、 他の端末ではエラーになり正常に動きません。 他の端末で実行する際、マクロやセルの中身など全く変更していません。 この場合、どのような原因が考えられますでしょうか? マクロは以下の部分でエラーが出ています。 Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False よろしくお願いします。

  • エクセルのマクロ 大量の置換の記述を簡略化

    Cells.Select Selection.Replace What:="東京", Replacement:="東京都", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False このような置換のマクロが何十個とあって 置換前の語句と置換後の語句ごとに すべて記述していますが 「置換の記述そのものはまったく同じなので  その中に語句を順番に入れ込んでいく」 という風な記述はできるものでしょうか? もし方法があるならば御教授願いたいです 宜しくお願い致します

  • エクセルのマクロにLEFT関数のような働きはありませんか?

    顧客データから抽出したデータの、書式を整える作業を自動記録したマクロを使ってやっています。 データの住所欄から、市か郡から下の部分を削除する作業があるのですが、抽出される顧客データは毎日違うので、自動記録のマクロでは出来ないため、この部分は手作業で行なっています。 この「住所の市または郡から下の部分を削除する作業」をマクロで行なう方法は無いでしょうか? 自動記録のマクロでは以下のようになっています。 Cells.Replace What:="○○県××市○○町1-2-3", Replacement:="○○県××市", LookAt:=xlPart, _SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ReplaceFormat:=FalseCells.Replace What:="○○県**市△△町4-5-6", Replacement:="○○県**市", LookAt:=xlPart, _SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ マクロに、ワークシート関数の=LEFT(A1,(FIND("市",A1)))と同じ様な働きを記述できればいいのか?とも思うのですが、やり方がわかりません。

  • エクセルで指定した文字に自動で置換することは可能ですか??

    A1セルに「バナナ」と表示されると下のマクロの記録で作った”置換するマクロ”の「りんご」の部分を「バナナ」に変更し、さらにこの置換マクロを自動実行することはできますか?? Sub Macro1()' Cells.Select Selection.Replace What:="名前(1)", Replacement:="りんご", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("A1").Select End Sub このマクロの記録でなくてもいいんですが、あるセルに置換したい文字が表示された時点でシート内の置換が実行されるようにしたいんですけど・・・・・。 よろしくお願いします。