Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6885 / 13644 ツリー ←次へ | 前へ→

【42507】Replace関数 もとあし 06/9/13(水) 17:10 質問[未読]
【42536】Re:Replace関数 ハチ 06/9/14(木) 8:30 発言[未読]
【42537】Re:Replace関数 ハチ 06/9/14(木) 8:34 発言[未読]
【42538】Re:Replace関数 もとあし 06/9/14(木) 9:50 お礼[未読]

【42507】Replace関数
質問  もとあし  - 06/9/13(水) 17:10 -

引用なし
パスワード
   こんにちは。

MyPath = Replace(ActiveWorkbook.Path,"フォルダA*","フォルダB")
としたときにフォルダA以下の階層のいろいろなフォルダも含め、
すべてフォルダBとしたいのですが、「*」を文字列と認識しているのでしょうか、
思うように動作しません。

MyPath = ActiveWorkbook.Path.Replace (What:="フォルダA*", Replacement:="フォルダB")
↑は「.Path」で「修飾子が不正です」といわれます。
マクロの記録でセルで置換をすると↑は「*」を任意の文字列と認識してくれるのですが。

すみません、どうしたら置換できるのか教えてください。

よろしくお願いします。

【42536】Re:Replace関数
発言  ハチ  - 06/9/14(木) 8:30 -

引用なし
パスワード
   ▼もとあし さん:

>MyPath = ActiveWorkbook.Path.Replace (What:="フォルダA*", Replacement:="フォルダB")
↑ヘルプを見れば解ると思いますが、これは他の部分でもエラーになります。
文字列に対するReplaceの引数は
Replace(expression, find, replace[, start[, count[, compare]]])
WhatじゃなくてFindです。
つまりRangeのReplaceとは別モノってことです。
ワイルドカードは使えないみたいですね。(よく知りませんが)

MyPathに文字列で取得 → InStrで"ファルダA"を探す →
Rightでその手前まで切り出し → & "フォルダB" をくっ付ける

でやれば良いと思います。

【42537】Re:Replace関数
発言  ハチ  - 06/9/14(木) 8:34 -

引用なし
パスワード
   >MyPathに文字列で取得 → InStrで"ファルダA"を探す →
>Rightでその手前まで切り出し → & "フォルダB" をくっ付ける

↑ RightじゃなくてLeftですね。
失礼しました。

【42538】Re:Replace関数
お礼  もとあし  - 06/9/14(木) 9:50 -

引用なし
パスワード
   ハチさんこんにちは

レスありがとうございます。

>WhatじゃなくてFindです。
>つまりRangeのReplaceとは別モノってことです。
RangeのReplaceとReplace関数とは違うものなのですね。
マクロの記録をしたときにWhat:=が出てきて、Findじゃないんだと不思議でした。

>ワイルドカードは使えないみたいですね。(よく知りませんが)
使えないのですね… (T_T) お知らせくださってありがとうございます。
延々と調べ物&試行錯誤をしているところでした。

>>MyPathに文字列で取得 → InStrで"ファルダA"を探す →
>>Rightでその手前まで切り出し → & "フォルダB" をくっ付ける
>
>↑ RightじゃなくてLeftですね。
>失礼しました。
上記の方法でやってみます。
ハチさん、ありがとうございました。

6885 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free