在EXCEL中用VBA操作WORD表格:怎样选择一个表格中除第一行以外的任意连续行(比如第2到4行)?
在EXCEL中用VBA,打开一个WORD文档,该文档有多个格式完全相同的表格。希望把这些表格数据复制到当前操作的工作表中。第一行是标题行,后续是WORD文档中所有表格中的...
在EXCEL中用VBA,打开一个WORD文档,该文档有多个格式完全相同的表格。希望把这些表格数据复制到当前操作的工作表中。第一行是标题行,后续是WORD文档中所有表格中的各行数据。
我的思路是:把第一个表格的标题行(第一行)复制粘贴到当前操作的工作表第一行,再分别复制各个表格的第二行到最后一行粘贴到工作表标题行下面的相应位置。
优点:较逐个把表格中数据读取到工作表速度快,且数据规范。
请高手支招,指导具体的选择WORD表格除标题行之外——选择第二行到最后一行、选择任意连续行(如2-4行)的实际可靠代码!
我的EXCEL版本是03版,好多能够直接在WORD文档中测试成功的代码,移植到EXCEL中操作均失败,初学WORD的VBA知识,实在是没有能力转过弯来,敬请高人指点!
谢谢!
补充说明:
1.WORD表格是常规表格,其中没有任何合并单元格。
2.在EXCEL界面操作时,编辑代码中不采取直接引用 Microsoft Word 11.0 Object Library的方法,而是采用后期绑定方式!
实际思路是:
wjM = ThisWorkbook.Path & "\111.doc"'带路径的文件名称
Set wApp = CreateObject("word.application") '创建word对象
Set wDoc = wApp.Documents.Open(wjM) '创建文档记录对象
…………
请指导后续具体操作代码——
With wDoc.Tables(1).Range
t = .Rows.Count'表格行数
'.MoveStart wdRow, 1'直接在WORD文档中指第2行到最后一行但在EXCEL中不能执行
.Select'选择
End With
…………
请给出正确代码,并用中文形式给予适当解释!
谢谢 展开
我的思路是:把第一个表格的标题行(第一行)复制粘贴到当前操作的工作表第一行,再分别复制各个表格的第二行到最后一行粘贴到工作表标题行下面的相应位置。
优点:较逐个把表格中数据读取到工作表速度快,且数据规范。
请高手支招,指导具体的选择WORD表格除标题行之外——选择第二行到最后一行、选择任意连续行(如2-4行)的实际可靠代码!
我的EXCEL版本是03版,好多能够直接在WORD文档中测试成功的代码,移植到EXCEL中操作均失败,初学WORD的VBA知识,实在是没有能力转过弯来,敬请高人指点!
谢谢!
补充说明:
1.WORD表格是常规表格,其中没有任何合并单元格。
2.在EXCEL界面操作时,编辑代码中不采取直接引用 Microsoft Word 11.0 Object Library的方法,而是采用后期绑定方式!
实际思路是:
wjM = ThisWorkbook.Path & "\111.doc"'带路径的文件名称
Set wApp = CreateObject("word.application") '创建word对象
Set wDoc = wApp.Documents.Open(wjM) '创建文档记录对象
…………
请指导后续具体操作代码——
With wDoc.Tables(1).Range
t = .Rows.Count'表格行数
'.MoveStart wdRow, 1'直接在WORD文档中指第2行到最后一行但在EXCEL中不能执行
.Select'选择
End With
…………
请给出正确代码,并用中文形式给予适当解释!
谢谢 展开
2个回答
展开全部
Dim wApp As Word.Application
Dim wDoc As Word.Document
Dim TC%, R%, C%
set wDoc = wApp.Documents.Open("要打开的文件")
TC = wDoc.Tables.Count
R = '从哪里开始你自己定吧
C =
If TC = 0 Then wDoc.Close : Exit Sub
For i = 1 To TC
With wDoc.Tables(i)
wDoc.Range(.Cell(2, 1).Range.Start, .Cell(.Rows.Count, .Columns.Count).Range.End).Select
Selection.Copy
xlSheet.Cells(R, C).Select
xlSheet.PasteSpecial Format:="文本" '选择为文体方式粘贴
R = R + .Rows.Count '控制行的位置为下一次粘贴
End With
Next
你在Excel里改成CreateObject方法也可引用也可
大概代码是这样了,细节部分你自己加上去吧
如果想速度最好把Word运行时Show出来,运行完关了就可以
Dim wDoc As Word.Document
Dim TC%, R%, C%
set wDoc = wApp.Documents.Open("要打开的文件")
TC = wDoc.Tables.Count
R = '从哪里开始你自己定吧
C =
If TC = 0 Then wDoc.Close : Exit Sub
For i = 1 To TC
With wDoc.Tables(i)
wDoc.Range(.Cell(2, 1).Range.Start, .Cell(.Rows.Count, .Columns.Count).Range.End).Select
Selection.Copy
xlSheet.Cells(R, C).Select
xlSheet.PasteSpecial Format:="文本" '选择为文体方式粘贴
R = R + .Rows.Count '控制行的位置为下一次粘贴
End With
Next
你在Excel里改成CreateObject方法也可引用也可
大概代码是这样了,细节部分你自己加上去吧
如果想速度最好把Word运行时Show出来,运行完关了就可以
更多追问追答
追问
谢谢cyclong2011的回答
测试
wDoc.Range(.Cell(2, 1).Range.Start, .Cell(.Rows.Count, .Columns.Count).Range.End).Select
未通过,提示——运行时错误,'451',property let 过程未定义,property get过程未返回对象!
追答
请问你的wDoc对象引用有定义好了没?
我这里测试是没问题的
能否看下你的代码
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询