0

私はExcelを使用してテキストファイルを開き、特定の文字列を見つけて何も置き換えたり削除したりしています。どうやらアスタリスク/ワイルドカードの適切な構文を理解するのに苦労しています。これが誰かにとって簡単な答えになることを願っています!

隠れた影響がある場合に備えて、私のコードの簡単な例を次に示します。

Sub ReplaceText()
Dim DataFind As String

Open "ORIGINAL\073347.TXT" For Binary As #1
DataFind = Space$(LOF(1))
Get #1, , DataFind
Close #1

                     '<< 073347 >>
DataFind = Replace(DataFind, "<< * >>", "")

Open "NEW\073347.TXT" For Output Access Write As #1
Print #1, DataFind
Close #1

End Sub

基本的に、テキスト ファイルで特定の種類の文字列 (構文に関して) を検索したいのですが、この場合は "<< 073347 >>" になりますが、< で何かを検索するために使用する正しい構文が見つからないようです。 <>どちらかの側、または自分が間違っていることを知ったら、他の可能性があります。「<< 073347 >>」は正常に動作します。「&」記号、スペースの追加などを試しましたが、適切なコンテキストではない可能性があります。うまくいけば、これで十分な情報です。そして、前もって感謝します!

4

4 に答える 4

0

を使用したこのようなもの

Sub ManipulateStrings()
    Dim strIn As String
    Dim objRegex As Object
    'first and last sub-portions are matches, middle missing leading/trailing spaces   
    strIn = "<< 073347 >> ff <<fred>>, << fred >>"
    Set objRegex = CreateObject("vbscript.regexp")
    With objRegex
        .Global = True
        .Pattern = "<< .+? >>"
        If .test(strIn) Then
            MsgBox .Replace(strIn, vbNullString)
        Else
            MsgBox "No matches"
        End If
    End With
End Sub
于 2013-02-19T03:02:10.040 に答える
0

Mid 関数とループを使用してこれを処理できます。

    Sub ReplaceText()
    Dim DataFind As String
    Open "1.TXT" For Binary As #1
    DataFind = Space$(LOF(1))
    Get #1, , DataFind
    Close #1

                         '<< 073347 >>
    While InStr(DataFind, "<<") > 0 And InStr(DataFind, "<<") < InStr(DataFind, ">>")
        DataFind = Mid(DataFind, 1, InStr(DataFind, "<<") - 1) & Mid(DataFind, InStr(DataFind, ">>") + 2, Len(DataFind))
    Wend
    Open "1.TXT" For Output Access Write As #1
    Print #1, DataFind
    Close #1
    End Sub
于 2013-02-19T02:38:37.760 に答える
0

Excel の置換機能を使用してワイルドカード置換を行うことはできません。Using Regex / vbscriptを使用すると、運が良くなる可能性が高くなります

于 2013-02-19T02:25:50.143 に答える
0

置換機能は、完全一致のみを検索します。パターンに従って文字列を置換するには、正規表現を使用する必要があります。

良いスタートは、チュートリアルhttp://www.macrostash.com/2011/10/08/simple-regular-expression-tutorial-for-excel-vba/です。一致した後、Mid() を使用してコンテンツを置き換えます。

Tools --> References を使用して、最初に「Microsoft VBScript Regular Expressions」参照を追加することを忘れないでください。

于 2013-02-19T02:41:37.543 に答える