【问题标题】:Word VBA: Table cell range to text fileWord VBA:表格单元格范围到文本文件
【发布时间】:2022-01-07 12:34:22
【问题描述】:

我想在 word 文档中复制像 this 这样的表格,并仅提取曲目标题和作曲家。范围的选择按计划进行:

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 获得手动复制的结果?

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    试试这个

    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
    

    快照

    示例文件

    http://sdrv.ms/Mo7Xel

    下载文件并运行程序Sub Allmusic()

    输出

    【讨论】:

    • 谢谢!它几乎可以工作。结果如下:db.tt/RWPwco2i。正如您所看到的,每个单元格中的两条线是合并的,所以也许我需要一个额外的“每条线循环”或其他东西。还可以看到每行末尾的段落符号,这可能与编码有关。
    • 我可以看看你的word doc文件吗?
    • 顺便说一句,它没有合并。它是一个低于另一个。您想要在每行之间或每个 Composer 之后有一个空格吗?关于 para 标记,可以轻松删除。
    • 我刚刚注意到,当将文本文件的内容复制到 word 中时,它会跳过标题和作曲家之间的行。那么我如何让它跳过文本文件中的行?这是我正在处理的 .docm 文件:db.tt/0VWVOIL6。如果您在那里重新粘贴内容,您应该会得到相同的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2015-11-26
    相关资源
    最近更新 更多