我的excel表中有一个自定义按钮,当用户单击它时,代码允许用户上传文件,然后代码修改上传的文件,并将修改后的内容存储在String变量s
中。-
Option Explicit
Sub Button1_Click()
Dim fso As Object, ts As Object, doc As Object
Dim data As Object, filename As String
Dim ws As Worksheet
Set ws = ActiveSheet
' select file
With Application.FileDialog(msoFileDialogFilePicker)
If .Show <> -1 Then Exit Sub
filename = .SelectedItems(1)
End With
' read file and add top level
Set doc = CreateObject("MSXML2.DOMDocument.6.0")
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpentextFile(filename)
doc.LoadXML Replace(ts.readall, "<metadata>", "<root><metadata>", 1, 1) & "</root>"
ts.Close
' import data tag only
Dim s As String
Set data = doc.getElementsByTagName("data")(0)
s = data.XML
' MsgBox s
' replace the original XML file with contents of variable s here
If MsgBox(s & vbCrLf, vbYesNo) = vbYes Then
Application.SendKeys ("%lt")
Else
MsgBox "Ok"
End If
End Sub
字符串
假设我单击了该按钮并上传了一个XML文件C:/My Folder/sample.xml
。现在,代码修改它,并更新文件(使用存储在变量s
中的新内容)。下面是一个代表性的图片-(修改的内容是s变量的直接值)
x1c 0d1x的数据
如何实现上述目标?请引导...谢谢你,谢谢
3条答案
按热度按时间wlp8pajw1#
请参见TextStream Objects的CreateTextFile方法
字符串
km0tfn4u2#
为什么不通过再次加载所需的字符串(在
Set data = doc.getElementsByTagName("data")(0)
之后)来继续XML方法:字符串
发布代码的附注
<root>
和结束</root>
标记,这有点奇怪,通过 *型
型
因此,imo 你可以考虑改变你的模式文件,使其不包含顶层的元数据,而是包含已经在设计中的后续层次结构,以提供可加载的、格式良好的xml标记。
u1ehiz5o3#
文件中的全部数据替换““