MS Access VBA替换XML文档中的符号

MS Access VBA替换XML文档中的符号,xml,vba,replace,Xml,Vba,Replace,我一直在尝试使用下面的代码,它是上面代码的编辑版本,允许我选择多个文件。问题是。。。1第一个文件替换并保存2。第二个文件替换,同时添加第一个文件3的内容。第三个文件将替换,同时添加前2个文件4的内容。等等 有什么建议吗 Private Sub Command483_Click() Dim qdf As DAO.QueryDef Set qdf = CurrentDb.QueryDefs("DeleteDetailsTable") qdf.Execute Dim StrFileName As

我一直在尝试使用下面的代码,它是上面代码的编辑版本,允许我选择多个文件。问题是。。。1第一个文件替换并保存2。第二个文件替换,同时添加第一个文件3的内容。第三个文件将替换,同时添加前2个文件4的内容。等等

有什么建议吗

Private Sub Command483_Click()
Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.QueryDefs("DeleteDetailsTable")
qdf.Execute


Dim StrFileName As String
Dim fd As FileDialog
Dim vrtSelectedItem As Variant


Dim sBuf As String
Dim sTemp As String
Dim iFileNum As Integer
Dim sFileName As String

    DoCmd.SetWarnings False
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
    .InitialFileName = "c:\saample\*.xml"
    If .Show = -1 Then
        For Each vrtSelectedItem In .SelectedItems

           sFileName = vrtSelectedItem
           iFileNum = FreeFile()
           Open sFileName For Input As iFileNum
           Do Until EOF(iFileNum)
                Line Input #iFileNum, sBuf
                sTemp = sTemp & sBuf & vbCrLf
           Loop
           Close iFileNum
           sTemp = Replace(sTemp, "&", "and")
           iFileNum = FreeFile
           Open sFileName For Output As iFileNum
           Print #iFileNum, sTemp

           Close #iFileNum



     DoCmd.SetWarnings True
        Next vrtSelectedItem
    Else
    End If
End With
Set fd = Nothing
DoCmd.SetWarnings True
DoCmd.SetWarnings False
Exit Sub

End Sub
问题在于:

       Do Until EOF(iFileNum)
            Line Input #iFileNum, sBuf
            sTemp = sTemp & sBuf & vbCrLf
       Loop
每次通过每个vrtSelectedItem的
循环都会将内容添加到
sTemp
(这就是为什么每次编写时它都包含以前所有文件的内容)

您只需在每次迭代开始时清除(重置)
sTemp
即可修复此问题:

For Each vrtSelectedItem In .SelectedItems
   sFileName = vrtSelectedItem
   iFileNum = FreeFile()

   ' Add the next line
   sTemp = ""
   Open sFileName For Input As iFileNum
   Do Until EOF(iFileNum)
      Line Input #iFileNum, sBuf
      sTemp = sTemp & sBuf & vbCrLf
   Loop

我只是测试了一下,效果非常好。谢谢您。