s = "///aaa(12)___aaa(334)\\\\aaa(556)___(78)\\\aaaXY"
のようなaaaのあとにカッコつき数字が続かないケースはありますか?
そのときは、aaaだけ消すのですか?
もし、
・そういうケースは無い
・あってもその場合は、aaaを単に消すだけでよい
ということなら、下記のようにできますね。
Sub test2()
Dim s As String
Dim ss As String
Dim ary, e
Dim k As Long
s = "///aaa(12)___aaa(334)\\\\aaa(556)___(78)\\\aaaXY"
ary = Split(s, "aaa")
For k = 0 To UBound(ary)
e = ary(k)
If Left(e, 1) = "(" Then
e = Replace(e, "(", "", 1, 1)
e = Replace(e, ")", "", 1, 1)
ary(k) = e
End If
Next
ss = Join(ary, "")
Debug.Print ss '出力は ///12___334\\\\556___(78)\\\XY
End Sub
もし、aaaXYというケースがあり、その場合はaaaXYのまま残す前提なら、
上記test2は使えません。aaaは必ず消えるので。
■
ちなみに、aaaXYといったケースがあり、その場合はXYに置換するという前提なら、
前のコードに修正が必要です。
.Pattern = "(?:aaa\((\d+)\)|aaa)"
とします。
単にaaaXYはそのまま残すなら、修正不要です。
■
ちなみに、Nuboさんが提示してくださったコードは、予め(78)が分かっている前提でしょうか。
多数のケースがあり、事前に分からないケースが普通かななどと思ったりもしますが、
いかがですか?ふと気になったので。