EXCEL VBA的提取代码怎么写?
我想进行提取的操作.在工作簿A,"1"表的A9:B,AA9:AG开始提取对应的工作簿B,"1"表的A9:B,AA9:AG的数值(工作簿B是非打开的状态),直到A为空为止....
我想进行提取的操作.
在工作簿A,"1"表的A9:B,AA9:AG开始提取 对应的 工作簿B,"1"表的A9:B,AA9:AG的数值(工作簿B是非打开的状态),直到A为空为止.
这种提取用公式非常简单,但是数据多的话,比如说要提取几万行,用公式的话,首先打开工作簿就很慢.
所以有没有办法用VBA的办法提取,不打开工作簿B,好像在不打开目标工作簿的情况下,只能用添加公式的办法,是吗?应该怎么写啊? 展开
在工作簿A,"1"表的A9:B,AA9:AG开始提取 对应的 工作簿B,"1"表的A9:B,AA9:AG的数值(工作簿B是非打开的状态),直到A为空为止.
这种提取用公式非常简单,但是数据多的话,比如说要提取几万行,用公式的话,首先打开工作簿就很慢.
所以有没有办法用VBA的办法提取,不打开工作簿B,好像在不打开目标工作簿的情况下,只能用添加公式的办法,是吗?应该怎么写啊? 展开
2个回答
展开全部
Sub 提取数据()
Dim wdapp As Object
Set wdapp = CreateObject("word.application")
wdapp.Documents.Open Filename:=ThisWorkbook.Path & "\DEMO\9-4.demo.docx"
wdapp.Visible = True
With wdapp.Documents(1).Tables(1).
Range
For i = 1 To .Cells.Count
u = Left(.Cells(i).Range, Len(.Cells(i).Range) - 1)
If IsNumeric(u) Then
n = n + 1
Cells(n + 1, 2) = u
Cells(n + 1, 1) = Left(.Cells(i - 1).Range, Len(.Cells(i - 1).Range) - 1)
End If
Next
End With
Cells(1, 1) = "姓名"
Cells(1, 2) = "分数"
wdapp.Quit
End Sub
Dim wdapp As Object
Set wdapp = CreateObject("word.application")
wdapp.Documents.Open Filename:=ThisWorkbook.Path & "\DEMO\9-4.demo.docx"
wdapp.Visible = True
With wdapp.Documents(1).Tables(1).
Range
For i = 1 To .Cells.Count
u = Left(.Cells(i).Range, Len(.Cells(i).Range) - 1)
If IsNumeric(u) Then
n = n + 1
Cells(n + 1, 2) = u
Cells(n + 1, 1) = Left(.Cells(i - 1).Range, Len(.Cells(i - 1).Range) - 1)
End If
Next
End With
Cells(1, 1) = "姓名"
Cells(1, 2) = "分数"
wdapp.Quit
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询