【发布时间】:2021-10-13 03:26:17
【问题描述】:
我正在尝试编写一个 VBA 宏,该宏将读取文本文档并将特定单词放入列中。更新:这是一个文件样本,显然是 XML,所以至少我今天学到了一些新东西。所以我想我需要一个程序来摆脱 XML 部分,并将文本放入列中。
<Alarm>
<ID>1002</ID>
<Type>Fault</Type>
<Message>Bad Brake</Message>
<Tagname>error.e2</Tagname>
</Alarm>
<Alarm>
<ID>1004</ID>
<Type>Fault</Type>
<Message>No Motion</Message>
<Tagname>error.e4</Tagname>
</Alarm>
<Alarm>
<ID>1005</ID>
<Type>Fault</Type>
<Message>Upper safety door open</Message>
<Tagname>error.e5</Tagname>
</Alarm>
最终,我试图将 4 位错误代码放入 A 列(即 1002、1004...),并将错误消息放入 B 列(即刹车不良、无动作...)。我将粘贴到目前为止的内容,我尝试将其编码为仅开始一对数据。我一直试图将错误消息放入 B 列。错误消息都从每一行的相同位置开始,但我不知道如何停止复制文本,因为每个错误消息的长度不同人物。有什么想法吗?
(P.S. - 如果代码很糟糕,我深表歉意,我一直在实习电气工程师,所以我的编程已经相当生疏了。)
Private Sub CommandButton1_Click()
Dim myFile As String, textLine As String, ID As Integer, error_msg As Integer
myFile = "C:\Users\scholtmn\Documents\Projects\Borg_Warner_txt_file\BW_fault_codes.txt"
Open myFile For Input As #1
Do Until EOF(1)
Line Input #1, textLine
Text = Text & textLine
Loop
Close #1
ID = InStr(Text, "<ID>")
error_msg = InStr(Text, "<Message>")
Range("A1").Value = Mid(Text, ID + 4, 4)
Range("B1").Value = Mid(Text, error_msg + 9, (InStr(Text, " <") - 31))
End Sub
【问题讨论】:
-
根据这里的网站规则,请不要发布文本图像,只需发布文本(在这种情况下作为代码)。我们不能处理图片,我们需要文字。
-
另外,这个文本是真正的 XML,所以你需要的是 VBA 代码,它会为你“分解”XML。
-
所以,请编辑您的问题并将文本文件作为纯文本放入其中。