Как переименовать XML-файл в VBA

#xml #vba #file-rename

#xml #vba #файл-переименовать

Вопрос:

Мне нужно отредактировать XML-документ в VBA, и мне нравится сохранять исходный xml (ppp.xml ) и отдельно новый отредактированный файл (который я хочу вызвать pppnew.xml ), в основном без обновления исходного файла. Поскольку я являюсь базовым пользователем, я начал со следующего фрагмента кода:

 Sub editxml()

Dim Obj As MSXML2.DOMDocument
Dim xmlpath As String

Set Obj = New DOMDocument
Obj.async = False
Obj.validateOnParse = False

xmlpath = "C:UsersxxxDesktopppp.xml"
Obj.SetProperty "SelectionNamespaces", "xmlns:ns0='http://update.DocumentTypes.Schema.ppp.Xml'"

If Obj.Load(xmlpath) = True Then
    MsgBox "File XML uploaded"
Else
    MsgBox "File XML not uploaded"
    Exit Sub
End If
        
        'My code follows here
    
Obj.Save xmlpath
End sub
 

Я попытался отредактировать следующую строку кода

 SelectionNamespaces", "xmlns:ns0='http://update.DocumentTypes.Schema.ppp.Xml'
 

Изменив его на

 SelectionNamespaces", "xmlns:ns0='http://pppnew.Xml'
 

Но это не работает: код обновляет исходный файл, который я хочу сохранить неотредактированным.

Ответ №1:

Фактически вы сохраняете свои изменения в ТОМ ЖЕ файле

Изменить

 Obj.Save xmlpath
 

Для

 new_xmlpath = "C:UsersxxxDesktopnew.xml"
Obj.Save new_xmlpath
 

Комментарии:

1. Спасибо! Нужно ли мне также редактировать строку «‘SelectionNameSpace»‘ или просто оставить ее исправленной?

2. Если начальный XML-файл не имеет определенной ВАМИ структуры, а результирующий XML сохраняет соответствие исходной схеме и пространствам имен, я предлагаю вам НЕ изменять это свойство. Я настоятельно рекомендую вам сначала немного узнать о том, что такое схемы и пространства имен, чтобы лучше понять, как работает XML

3. Спасибо за ваш ответ, не могли бы вы предложить мне хороший источник для начала?