2

XMLファイル内で置き換える必要のある約600の異なるテキスト文字列があります(これでタスクが実行される場合は、他のプログラムも使用できますが、notepad ++を使用しています)。テキストの変更は、別のExcelファイルに一覧表示されます。スクリプトまたはコマンドを実行して、すべての文字列を個別に実行しなくても、一度にすべての文字列を検索/置換できる方法はありますか?

ありがとうございました

4

1 に答える 1

3

簡単な VBA を使用して、Excel 内からジョブを実行できます。たとえば、Excel VBA イミディエイト ウィンドウから検索置換範囲を渡して、以下の Sub を呼び出します (VBA エディターの Alt+F11 を使用してアクセスし、次に [表示] -> [イミディエイト] を使用します)。

ReplaceXML Range("A1:B600")

A1:B600 に 600 個の検索置換文字列が含まれているとします。

モジュールで以下を定義した後(挿入 -> VBA エディター内からモジュール (Alt+F11) ):

Option Explicit ' Use this !

Public Sub ReplaceXML(rFindReplaceRange as Range) ' Pass in the find-replace range

    Dim sBuf As String
    Dim sTemp As String
    Dim iFileNum As Integer
    Dim sFileName As String
    Dim i as Long

    ' Edit as needed
    sFileName = "C:\filepath\filename.xml"

    iFileNum = FreeFile
    Open sFileName For Input As iFileNum

    Do Until EOF(iFileNum)
        Line Input #iFileNum, sBuf
        sTemp = sTemp & sBuf & vbCrLf
    Loop

    Close iFileNum

    ' Loop over the replacements
    For i = 1 To rFindReplaceRange.Rows.Count
        If rFindReplaceRange.Cells(i, 1) <> "" Then
            sTemp = Replace(sTemp, rFindReplaceRange.Cells(i, 1), rFindReplaceRange(i, 2))
        End If
    Next i

    ' Save file

    iFileNum = FreeFile

    ' Alter sFileName first to save to a different file e.g.
    sFileName = "C:\newfilepath\newfilename.xml"
    Open sFileName For Output As iFileNum

    Print #iFileNum, sTemp

    Close iFileNum

End Sub
于 2013-03-17T02:14:33.140 に答える