VBA:将文本文件中的行复制到Word doc中

时间:2011-05-23 14:55:23

标签: copy-paste text-files word-vba

通常我创建我的宏来记录该功能,然后相应地调整它们,所以我很遗憾不知道如何实现这个操作。

我有许多文本文件,是帐户档案;每个文件至少有30k +行,每个文件中有数百个(如果不是数千个)帐户。文档中的第一行包含帐号,每个帐户除以一个唯一的文本字符串。

目标是让一个宏在文本文件中查找,找到帐号,然后复制它下面的所有行,直到它到达唯一的分隔字符串,然后将它们粘贴到活动的word文档中进行查看。 / p>

我无法想象我会从这样一个模糊的问题中得到具体答案,但任何可以提供的指示都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

这是一个快速的&脏的一个来说明原则....让文本文件被称为“accounts.txt”,其中包含以下内容:

Account 1
item 1
item 2
item 3
=========
Account 2
item 4
item 5
=========
Account 3
item 6
item 7
=========

现在让我们看一下使用Open AsLine Input以及循环结构的一些非常基本的VBA代码....

Sub GetAccountFromTextFile(FileName As String, Accnt As String)
Dim MyLine As String, State As String

    Open FileName For Input As #1
    State = "Searching"               ' we could make this much simpler but 
                                      ' want to illustrate the different stati
                                      ' the loop is reaching

    Do While Not (EOF(1) Or State = "End")

        Line Input #1, MyLine         ' read next line from text file

                                      ' now process as function of
                                      ' content and current state

        If State = "Reading" And MyLine = "=========" Then
            State = "End"

        ElseIf MyLine = "Account " & Accnt Then
            Selection.InsertAfter "Account " & Accnt & vbCrLf
            State = "Reading"

        ElseIf State = "Reading" Then
            Selection.InsertAfter MyLine & vbCrLf
        End If

    Loop
    Close #1

End Sub

你用另一个子

来称呼它
Sub test()
    GetAccountFromTextFile "C:\Documents and Settings\MySelf\Desktop\accounts.txt", 1
    GetAccountFromTextFile "C:\Documents and Settings\MySelf\Desktop\accounts.txt", 3
    GetAccountFromTextFile "C:\Documents and Settings\MySelf\Desktop\accounts.txt", 2
End Sub

从Word Doc中的任何位置开始测试(),以下内容将粘贴到文档中:

Account 1
item 1
item 2
item 3
Account 3
item 6
item 7
Account 2
item 4
item 5

现在,您可以在主要子(可能是对话框表格)中非常有创意,了解如何获取文件名和帐号,然后才能调用帐户获取者,并且您需要修改查找帐号的条件和吸气剂内的分离模式。不是很复杂,但应该足以让你前进。

祝你好运 拾音