正在导入 excel 数据
Importing excel data
我有一个 excel 文件,其数据在 A - ZZ 列中,我需要将 E、F、G、I 列导入到 word 文档中的 table 中。我不想使用邮件合并,因为我希望所有数据都在 word 中的同一个 table 中。谁能给我任何指示?找了一段时间,测试代码没有成功。
Sub Macro1()
Dim rowCount2 As Long, shtSrc As Worksheet
Dim shtDest As Worksheet
Dim rng2 As Range
Set shtSrc = Sheets("Roadmap")
Set shtDest = ActiveDocument.Range(1)
rowCount2 = shtSrc.Cells(Rows.Count, "A").End(xlUp).Row
Set rng2 = shtSrc.Range("A1:A" & rowCount2)
currentRow = 2
For Each cell2 In rng2.Cells
If cell2.Value <> "" Then
shtDest.Range("B" & currentRow).Value2 = cell2.Value2
shtDest.Range("C" & currentRow).Value2 = cell2.Offset(0, 1).Value2
shtDest.Range("G" & currentRow).Value2 = cell2.Offset(0, 2).Value2
shtDest.Range("H" & currentRow).Value2 = cell2.Offset(0, 3).Value2
shtDest.Range("J" & currentRow).Value2 = cell2.Offset(0, 4).Value2
currentRow = currentRow + 1
ElseIf cell2.Value = "" Then
End If
Next cell2
End Sub
试试这个代码:
Sub test()
Debug.Print ActiveDocument.Range(1).Tables(1).Range.Rows(1).Cells(1).Range
Dim MyExcel As Excel.Application
Dim MyWB As Excel.Workbook
Set MyExcel = New Excel.Application
Set MyWB = MyExcel.Workbooks.Open("C:\Users\marci_000\Documents\Projekty\Almanach\NOTORIA_XLS\AGORA.XLS")
For i = 1 To 6
ActiveDocument.Range(1).Tables(1).Range.Rows(1).Cells(i).Range = MyWB.Sheets("ConsQRT_Reports").Cells(3, 70 - i)
Next i
MyWB.Close False
Set MyExcel = Nothing
Set MyWB = Nothing
End Sub
我假设在第一段 (ActiveDocument.Range(1)
) 中有一个 table (ActiveDocument.Range(1).Tables(1)
)。第一个 Debug.print
将第一个单元格(第一行,第一列)的内容发送给 Immediate window。
然后我打开一个 Excel 文件和单元格(从 Excel)69 到 64,将第 3 行的内容写入 Word table.
中的单元格
工作完成后,Close
Excel 中的文件并进行清理 (=Nothing
) - 否则你将有一堆 "unfinished" 和隐藏实例Excel.
我有一个 excel 文件,其数据在 A - ZZ 列中,我需要将 E、F、G、I 列导入到 word 文档中的 table 中。我不想使用邮件合并,因为我希望所有数据都在 word 中的同一个 table 中。谁能给我任何指示?找了一段时间,测试代码没有成功。
Sub Macro1()
Dim rowCount2 As Long, shtSrc As Worksheet
Dim shtDest As Worksheet
Dim rng2 As Range
Set shtSrc = Sheets("Roadmap")
Set shtDest = ActiveDocument.Range(1)
rowCount2 = shtSrc.Cells(Rows.Count, "A").End(xlUp).Row
Set rng2 = shtSrc.Range("A1:A" & rowCount2)
currentRow = 2
For Each cell2 In rng2.Cells
If cell2.Value <> "" Then
shtDest.Range("B" & currentRow).Value2 = cell2.Value2
shtDest.Range("C" & currentRow).Value2 = cell2.Offset(0, 1).Value2
shtDest.Range("G" & currentRow).Value2 = cell2.Offset(0, 2).Value2
shtDest.Range("H" & currentRow).Value2 = cell2.Offset(0, 3).Value2
shtDest.Range("J" & currentRow).Value2 = cell2.Offset(0, 4).Value2
currentRow = currentRow + 1
ElseIf cell2.Value = "" Then
End If
Next cell2
End Sub
试试这个代码:
Sub test()
Debug.Print ActiveDocument.Range(1).Tables(1).Range.Rows(1).Cells(1).Range
Dim MyExcel As Excel.Application
Dim MyWB As Excel.Workbook
Set MyExcel = New Excel.Application
Set MyWB = MyExcel.Workbooks.Open("C:\Users\marci_000\Documents\Projekty\Almanach\NOTORIA_XLS\AGORA.XLS")
For i = 1 To 6
ActiveDocument.Range(1).Tables(1).Range.Rows(1).Cells(i).Range = MyWB.Sheets("ConsQRT_Reports").Cells(3, 70 - i)
Next i
MyWB.Close False
Set MyExcel = Nothing
Set MyWB = Nothing
End Sub
我假设在第一段 (ActiveDocument.Range(1)
) 中有一个 table (ActiveDocument.Range(1).Tables(1)
)。第一个 Debug.print
将第一个单元格(第一行,第一列)的内容发送给 Immediate window。
然后我打开一个 Excel 文件和单元格(从 Excel)69 到 64,将第 3 行的内容写入 Word table.
工作完成后,Close
Excel 中的文件并进行清理 (=Nothing
) - 否则你将有一堆 "unfinished" 和隐藏实例Excel.