Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2010)
複数ファイルのVBAコードを一括で置換する方法
投稿日時: 19/09/26 17:36:53
投稿者: whitesax

複数ファイルのVBAコード内で、同じURLのファイルを開く処理をしているのですが、事情により指定していたファイル名を変更しなくてはならなくなりました。
 
置換前
Workbooks.Open FileName:="c:\test.xls" , ReadOnly:=True
 
置換後
Workbooks.Open FileName:="c:\test2.xls" , ReadOnly:=True
 
このような処理を行いたいのですが、ファイル(プロジェクト)ごとに、置換を行うしかないでしょうか?
できれば複数ファイルを一括で置換できたらと思っています。

回答
投稿日時: 19/09/26 18:18:00
投稿者: WinArrow
投稿者のウェブサイトに移動

プログラムをプログラムで改変する
ということは、ウィルスと疑われてしまう可能性があります。
ウイルスと同類と扱われるようなコードは、回答してもらえないと考えてください。
 
手操作でおこなうか、
モジュールをエクスポー^としてテキストファイルで置換してインポートするか、
他にも手段がああるかもしれませんが、

回答
投稿日時: 19/09/26 18:34:16
投稿者: WinArrow
投稿者のウェブサイトに移動

コードの中に、ファイルパスをリテラルで指定するのは
余りかんしんしません。
後々のためには、この部分を外部ファイルに作成するような工夫が必要とお思います。

回答
投稿日時: 19/09/26 19:14:16
投稿者: simple

そもそもですが、どれだけのファイル数があるか知りませんが、
カレントプロジェクトを対象に置換する操作をファイル数だけ繰り返すだけですから、
そのほうが絶対に早く済みます。1000も10000 も無いでしょ?
 
どうしてもということなら、
「VBAでVBEを操作する」
http://officetanaka.net/excel/vba/vbe/
こちらを参考に研鑽してください。
(著者は有名なインストラクターの方ですね。パソ通の頃から存じています。)
 
以下、余談。
私もその昔(10年以上前)同様の質問にコードを提示して回答したことがあり、
周囲から犯罪者の如きダメ出しをもらい、不承不承、コードを削除した経験があります。
 
ウイルスを考えているような人はこの程度のスキルは持っていると思っていました。
文字列の置換でウイルスが作れるのか、という疑問もあります。
今もその考えは変わりませんが、そういう仕切りになっているようなので、
ご自身で研鑽ください。

投稿日時: 19/09/27 10:50:41
投稿者: whitesax

たくさんのご返信をいただきありがとうございます。
またご返信が遅くなり申し訳ございませんでした。
 
そもそもウィルス作成のことは全く頭になく、ただ置換を行いたかっただけなのですが、
たしかに皆さまのおっしゃるとおりです。
 
私の配慮が足らず、皆様に余計なお気遣いをさせてしまいもうしわけありませんでした。
 
ご返信いただいた内容を参考にさせていただき、やはりカレントプロジェクトを対象に置換する
方法で行わせていただこうと思います。