【发布时间】:2021-03-05 09:17:03
【问题描述】:
我正在尝试提取 Word 文件中存在的表格并将它们复制/粘贴到 Excel 文件中。我尝试使用“while...Wend”编写 VBA 宏来执行此操作,但程序在 While WordDoc.Table(i) <> 0 中显示错误我不知道为什么,我不是经验丰富的 VBA 编码器。如果您有解决方案,请帮助我!
Sub copieTableauWordVersExcel()
'nécéssite d'activer la référence Microsoft Word xx.x Object Library
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim Fichier As String
Dim i As Integer
'le document Word est supposé fermé avant le lancement de la macro
Fichier = "C:\Users\429093\Desktop\ME.docx" 'adapter le chemin
Set WordApp = CreateObject("Word.Application") 'creation session Word
WordApp.Visible = False 'pour que word reste masqué pendant l'opération
Set WordDoc = WordApp.Documents.Open(Fichier) 'ouverture du fichier Word
i = 1
While WordDoc.Table(i) <> 0
WordDoc.Tables(i).Range.Copy 'copie du tableau Word
'dans Word chaque tableau est indexé
'ici l'index est à 2 car le premier index correspond au cadre autour du titre du
'document Word
i = i + 1
Wend
Range("A1").Select
ActiveSheet.Paste 'collage des données dans Excel
WordDoc.Close False 'ferme le document Word sans sauvegarde
WordApp.Quit 'ferme l'application Word
End Sub
【问题讨论】:
-
如果问题不清楚,请问我
-
对于初学者来说,它应该是
.Tables(i)。但是表的集合返回一个表,而不是一个数字,所以你不应该将它与零进行比较。 -
@KostasK。好的,但我的意思是0,当没有更多的表要复制时它会停止......在这种情况下我该怎么办?
-
尝试
For循环:For i = 0 To WordDoc.Tables.Count - 1 [...] Next i。 -
解决方案是否需要使用VBA?使用 R 可以很容易地完成它,其中有一个名为“docxtractr”的包。如果感兴趣,我会添加更多。