【问题标题】:Dynamically importing text from txt file in Word VBA从Word VBA中的txt文件动态导入文本
【发布时间】:2018-05-11 20:35:45
【问题描述】:

所以我有一个包含某些关键字的文本文件,每行一个,需要导入 VBA。关键字将在查找循环中用于检查其他文档。为此,我使用了这个解释:https://www.techrepublic.com/article/macro-trick-how-to-highlight-multiple-search-strings-in-a-word-document/。但是,由于单词是硬编码的,并且需要先验地定义关键字列表的大小,因此它并不可靠。 所以我现在所做的是在 Word VBA 中导入 txt 文件,首先计算所有行数,设置关键字列表的大小,然后在尝试定义关键字列表的每个索引时再次循环遍历文本文件。但是最后一位失败了。使用 F8 我仔细检查了代码是否得到了正确的单词,但是“keywordlist(i) = textline”似乎并没有真正将文本字符串解析到列表中。

这里出了什么问题?

sub getkeywords
On Error Resume Next
MsgBox "Select text file with keywords."
On Error GoTo 0

Dim keyfile As String, textline As String
With Application.FileDialog(msoFileDialogFilePicker)
  .AllowMultiSelect = False
  .Title = "Select Text Files"
        .Filters.Clear
        .Filters.Add "Text files", "*.txt"
        .InitialView = msoFileDialogViewDetails
  .Show
  On Error Resume Next
  keyfile = .SelectedItems(1)
  Err.Clear
  On Error GoTo 0
End With

Open keyfile For Input As #1

Dim i As Integer

Do Until EOF(1)
    Line Input #1, textline
    i = i + 1
Loop

Dim j As Integer
j = i - 1
Dim keywordlist() As String
ReDim keywordlist(0 To j) As String
i = 0

Do Until EOF(1)
    Line Input #1, textline
    keywordlist(i) = textline
    i = i + 1
Loop

Close #1
end sub

【问题讨论】:

    标签: vba text ms-word


    【解决方案1】:

    我发现了错误。在第一个 Do Until 循环之后,代码会忽略该文件,因此不会执行第二个 Do 循环。一个简单的解决方法是在第二个循环之前放置 Close #1 和 Open #1。可能不漂亮,但它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 2016-01-20
      • 2015-08-05
      • 1970-01-01
      相关资源
      最近更新 更多