Word VBA: 将表格单元格范围转换为文本文件

4
我想在Word文档中复制类似这样的表格,并仅提取曲目标题和作曲家。选定范围的操作进行得很顺利:
Dim myCells As Range
With ActiveDocument
    Set myCells = .Range(Start:=.Tables(1).Cell(2, 3).Range.Start, _
        End:=.Tables(1).Cell(.Tables(1).Rows.Count, 3).Range.End)
    myCells.Select
End With

现在,当我手动复制此选定内容并粘贴到记事本中时,我得到了我想要的内容:
Title
Composer
Title
Composer
etc.

然而,我希望将此选择自动写入文本文件。当我尝试这样做时,所有内容都被塞在一行文本中,并且到处都会出现小方块(段落符号?)。

我该如何使用VBA获得手动复制的结果呢?

1个回答

4

试试这个

Sub Allmusic()
    Dim filesize As Integer
    Dim FlName As String, tempStr As String
    Dim i As Long
    Dim MyAr() As String
    
    '~~> Name of Output File
    FlName = "C:\Sample.Txt"

    '~~> Get a free file handle
    filesize = FreeFile()

    '~~> Open your file
    Open FlName For Output As #filesize

    With ActiveDocument
        For i = 2 To .Tables(1).Rows.Count
            
            '~~> THIS LINE WILL NOT REFLECT CORRECTLY IN THE BROWSER
            '~~> PLEASE REFER TO THE SCREENSHOT OR THE ATTACHED FILE
            tempStr = Replace(.Tables(1).Cell(i, 3).Range.Text, "", "")
            
            If InStr(1, tempStr, Chr(13)) Then
                MyAr = Split(tempStr, Chr(13))
                Print #filesize, MyAr(0)
                Print #filesize, MyAr(1)
            Else
                Print #filesize, tempStr
            End If
            Print #filesize, ""
        Next i
    End With

    Close #filesize
End Sub

快照

enter image description here

示例文件

http://sdrv.ms/Mo7Xel

下载该文件并运行 Sub Allmusic()过程。

输出

enter image description here


谢谢!它几乎可以工作了。这是结果:http://db.tt/RWPwco2i。正如您所看到的,每个单元格中的两行被合并在一起,因此可能需要一个额外的“对于每行循环”或其他东西。您还可以看到每行末尾的段落符号,这可能与编码有关。 - Daan
我可以看一下你的Word文档文件吗? - Siddharth Rout
顺便说一下,它们没有合并。它们是一个在另一个下面。您想在每行之间或每个Composer之后加上空格吗?关于段落标记,那可以很容易地删除。 - Siddharth Rout
我刚刚注意到,当将文本文件的内容复制到Word中时,它会跳过标题和作者之间的行。那么,我该如何让它在文本文件中跳过行呢?这是我正在处理的.docm文件:http://db.tt/0VWVOIL6。如果你重新粘贴内容,应该会得到相同的结果。 - Daan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接