excel - 将 Excel 中的行转置为 Word 文档表
问题描述
我在 Excel 中有一个数据库,每个条目水平运行 8 个单元格(例如 A2:H10)。
我正在尝试从每个 8 个单元格条目中创建 Word 文档,这些单元格条目垂直注入到总共 8 个单元格的 Word 文档表中。
这是我尝试过的代码示例。
Sub CreateEntry()
Dim wdApp As Object
Dim wd As Object
Dim myarray As Variant
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Set wdApp = CreateObject("Word.Application")
End If
On Error GoTo 0
Set wd = wdApp.Documents.Add
wdApp.Visible = True
Sheets("Accommodation").Activate
Set Rng = ThisWorkbook.ActiveSheet.Range("A1:E76")
myarray = Range("A2:H2")
Range("A2:H2").Value = myarray
Range("A40:A48").Value = Application.WorksheetFunction.Transpose(myarray)
Set Rng = ThisWorkbook.ActiveSheet.Range("A40:A48")
Rng.Copy
With wd.Range
.Collapse Direction:=0
.InsertParagraphAfter
.Collapse Direction:=0
.PasteSpecial False, False, True
End With
End Sub
解决方案
You can create tables directly in Word using the Word object model. That gives you more control over how it turns out.
Sub CreateEntry()
Dim doc As Object, rw As Range, tbl As Object
Dim n As Long
For Each rw In ThisWorkbook.Sheets("Accommodation").Range("A2:H3").Rows
Set doc = GetWordDoc()
Set tbl = doc.tables.Add(doc.Range, rw.Cells.Count, 1)
For n = 1 To rw.Cells.Count
tbl.Cell(n, 1).Range.Text = rw.Cells(n).Text
Next n
Next rw
End Sub
Function GetWordDoc() As Object
Dim wdApp As Object
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True
End If
On Error GoTo 0
Set GetWordDoc = wdApp.Documents.Add
End Function
推荐阅读
- javascript - 我正在尝试使用 jquery toggle 在文本和图像之间交换
- android - 附加 Firebase 令牌以启动 URL -Trusted Web 活动
- vim - 一个简单的解决方案,我可以使用 Vim 将 3 行文本连接/连接在一起
- javascript - 从枚举创建通用类型
- linux - 我的 Linux 可执行程序中的段 00 是什么(64 位)
- python - 将 Python Selenium 用于 SVG 元素
- c# - c# 引号中单词的子字符串
- bash - 命令行参数无法正常工作
- javascript - 在 pa11y-ci 中测试之前如何登录/验证?
- python - 用python搜索嵌套的JSON数据