Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 导入excel数据_Vba_Ms Word - Fatal编程技术网

Vba 导入excel数据

Vba 导入excel数据,vba,ms-word,Vba,Ms Word,我有一个excel文件,A-ZZ列中有数据,我需要将E、F、G、I列导入word文档中的表中。我不想使用邮件合并,因为我希望数据都在word中的同一个表中。有人能给我指点吗?我已经寻找了一段时间,但测试代码没有成功 Sub Macro1() Dim rowCount2 As Long, shtSrc As Worksheet Dim shtDest As Worksheet Dim rng2 As Range Set shtSrc = Sheets("

我有一个excel文件,A-ZZ列中有数据,我需要将E、F、G、I列导入word文档中的表中。我不想使用邮件合并,因为我希望数据都在word中的同一个表中。有人能给我指点吗?我已经寻找了一段时间,但测试代码没有成功

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宏1()
Dim ROWCUNT2为长,shtSrc为工作表
Dim shtDest作为工作表
变暗rng2 As范围
设置shtSrc=图纸(“路线图”)
Set shtDest=ActiveDocument.Range(1)
rowCount2=shtSrc.Cells(Rows.Count,“A”).End(xlUp).Row
设置rng2=shtSrc.Range(“A1:A”和rowCount2)
currentRow=2
对于rng2中的每个单元格2。单元格
如果cell2.Value为“”,则
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=”“然后
如果结束
下一单元2
端接头
尝试以下代码:

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)
)中有一个表(
ActiveDocument.Range(1).Tables(1)
)。第一个
Debug.print
将第一个单元格(第一行,第一列)的内容发送到即时窗口。 然后我打开一个Excel文件,对于单元格(从Excel)69到64,将第3行的内容写入Word表格中的单元格

作业完成后,
关闭Excel中的文件并进行清理(
=Nothing
)-否则将有一堆“未完成”和隐藏的Excel实例。

请尝试以下代码:

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)
)中有一个表(
ActiveDocument.Range(1).Tables(1)
)。第一个
Debug.print
将第一个单元格(第一行,第一列)的内容发送到即时窗口。 然后我打开一个Excel文件,对于单元格(从Excel)69到64,将第3行的内容写入Word表格中的单元格

作业完成后,
关闭Excel中的文件并进行清理(
=Nothing
)-否则将有一堆“未完成”和隐藏的Excel实例。

请尝试以下代码:

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)
)中有一个表(
ActiveDocument.Range(1).Tables(1)
)。第一个
Debug.print
将第一个单元格(第一行,第一列)的内容发送到即时窗口。 然后我打开一个Excel文件,对于单元格(从Excel)69到64,将第3行的内容写入Word表格中的单元格

作业完成后,
关闭Excel中的文件并进行清理(
=Nothing
)-否则将有一堆“未完成”和隐藏的Excel实例。

请尝试以下代码:

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)
)中有一个表(
ActiveDocument.Range(1).Tables(1)
)。第一个
Debug.print
将第一个单元格(第一行,第一列)的内容发送到即时窗口。 然后我打开一个Excel文件,对于单元格(从Excel)69到64,将第3行的内容写入Word表格中的单元格



作业完成后,
关闭
Excel中的文件并进行清理(
=Nothing
)-否则您将有一堆“未完成”和隐藏的Excel实例。

您的图片链接显示为空白。请相应修改。同时向我们展示您的尝试。@L42我附加了我一直尝试使用的代码。此外,我一直附加图片,但由于某些原因它不会显示。这是我word文档中表格的图片。我正在尝试将单元格B、C、G、H、J从excel文件移动到word表格中的相应字段。您的图片链接显示为空白。请相应修改。同时向我们展示您的尝试。@L42我附加了我一直尝试使用的代码。此外,我一直附加图片,但由于某些原因它不会显示。这是我word文档中表格的图片。我正在尝试将单元格B、C、G、H、J从excel文件移动到word表格中的相应字段。您的图片链接显示为空白。请相应修改。同时向我们展示您的尝试。@L42我附加了我一直尝试使用的代码。此外,我一直附加图片,但由于某些原因它不会显示。这是我word文档中表格的图片。我正在尝试将单元格B、C、G、H、J从excel文件移动到word表格中的相应字段。您的图片链接显示为空白。请相应修改。同时向我们展示您的尝试。@L42我附加了我一直尝试使用的代码。此外,我一直附加图片,但由于某些原因它不会显示。这是我word文档中表格的图片。我正在尝试将单元格B、C、G、H、J从excel文件移动到word表格中的相应字段。谢谢@Marcin Nowicki-我收到错误消息“编译错误:运行此操作时未定义用户定义的类型。将MyExcel设置为Excel.ApplicationHi是一个常见问题。只需在工具中添加对Microsoft Excel的引用,即“引用”。欢呼声纠正了那个错误。现在它给我运行时错误,自动错误接口未知。我将MyWB.Sheets更新为“路线图”,即我的数据所在的选项卡的名称。ActiveDocument.Range(1).Tables(1).Range.Rows(1).Cells(i).Range=MyWB.Sheets(“路线图”).Cells(3,70-i)我的表格有6列,循环从第1列转到第6列。可能您的表没有足够的空间容纳数据。请理解。当我在word文档中添加另一列时,宏将运行。它只是无法获取任何数据。细胞(3,70-i)在做什么?我的excel文件中的数据从B1、C1开始