|
お尋ねします。
"Book::TDK01A"
"Book::SONY05D"
"Book::KEN10Z"
というような文字列を検索して"Book::"以降の文字列の置換をしたいと思っています。
置換回数は最大50回程あり、その都度違います。
エクセルの置換機能のように、まず初めの"Book::"が入った文字列を検索して置換、
次に、2番目にある"Book::"を検索して置換、次に3番目の"Book::"を検索して置換、
という作業を繰り返し行いたいのです。
以前こちらで見つけて使わせていただいている下記のコードを参考に作ろうと思うのですが、"Book::"以降の文字が数字の場合はうまくいくのですが、文字列になると、文字が追加されてしまい、置換したい"TDK01A"の部分が残ったままになります。
いろいろ試してみたのですがどこを変更すればよいのか全く解らず行き詰まってしまいました。
どなたかお知恵をお貸しいただけないでしょうか??
どうぞ宜しくお願い致します。
Const S As String = """Book::" '検索する文字列
Dim MyS As String
Dim MyS0 As String
Dim Ans1 As Variant
Dim n As Long
Dim i As Long, j As Long
i = 1
Do While InStr(i, MyS, S) > 0
j = InStr(i, MyS, S)
n = Val(StrConv(Mid(MyS, j + Len(S)), 8))
If n = 0 Then
MyS0 = S
Else
MyS0 = S & Mid(MyS, j + Len(S), Len(CStr(n)))
End If
Ans1 = Application.InputBox("検索文字列は " & MyS0 & _
Chr(13) & Chr(13) & "置換する文字列", , _
"""Book::"& StrConv("", 4))
If VarType(Ans1) = vbBoolean Then
Ans1 = MyS0
End If
If n = 0 Then
MyS = Left(MyS, j - 1) & Ans1 & Mid(MyS, j + Len(S))
Else
MyS = Left(MyS, j - 1) & Ans1 & Mid(MyS, j + Len(S) + Len(CStr(n)))
End If
i = j + Len(Ans1) - 1
Loop
|
|