vba-迭代集合
我想将已关闭工作簿的某些列复制粘贴到活动工作簿中。 我的列是分离的,所以我想通过集合变量上的循环来实现这一点 这里是我的代码(编辑) 但这不起作用,有几个错误: 首先vba-迭代集合,vba,excel,collections,Vba,Excel,Collections,我想将已关闭工作簿的某些列复制粘贴到活动工作簿中。 我的列是分离的,所以我想通过集合变量上的循环来实现这一点 这里是我的代码(编辑) 但这不起作用,有几个错误: 首先 Range(colonne.Item(col)).Select 不工作与“col”,但与索引,我猜。那个么,如何迭代键的值呢 第二,当我像那样将col替换为1时(尝试): 我有一个错误:对象变量或未设置块 除此之外,我还有一个弹出窗口,显示工作簿“source.xlsx”已准备好修改。我怎样才能淡化这个 你有什么想法吗?试试这个
Range(colonne.Item(col)).Select
不工作与“col”,但与索引,我猜。那个么,如何迭代键的值呢
第二,当我像那样将col替换为1时(尝试):
我有一个错误:对象变量或未设置块
除此之外,我还有一个弹出窗口,显示工作簿“source.xlsx”已准备好修改。我怎样才能淡化这个
你有什么想法吗?试试这个:
Option Explicit
Sub CopyDataFromClosedWbk()
Dim xlApp As Application
Dim xlBook As Workbook
Dim sht As Worksheet, sht2 As Worksheet
Set sht2 = ThisWorkbook.Sheets("Calcul")
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\Users\User\Desktop\source.xlsx") 'Adjust
Set sht = xlBook.Worksheets("DATA")
xlApp.DisplayAlerts = False
sht.Range("A:CJ").AutoFilter Field:=56, Criteria1:="CMR"
sht.Range("A:B").Copy: sht2.Range("A1").PasteSpecial xlPasteValues
sht.Range("E:F").Copy: sht2.Range("G1").PasteSpecial xlPasteValues
sht.Range("N:N").Copy: sht2.Range("I1").PasteSpecial xlPasteValues
sht.Range("P:P").Copy: sht2.Range("F1").PasteSpecial xlPasteValues
xlBook.Close
xlApp.Quit
End Sub
我不知道使用集合/字典保存列的背后是否有任何原因,但这种方式更容易 不要使用
。选择。另外,你在每个单元后打开和关闭工作臂,这不是很有效。我没有注意,谢谢。如果我不使用。请选择如何使用?我尝试了Range(colonne.Item(col)).Paste,但这不起作用。您需要在此处使用Scripting.Dictionary来代替集合,这样您就可以访问键和值。
Range(colonne.Item(1)).Select
Option Explicit
Sub CopyDataFromClosedWbk()
Dim xlApp As Application
Dim xlBook As Workbook
Dim sht As Worksheet, sht2 As Worksheet
Set sht2 = ThisWorkbook.Sheets("Calcul")
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\Users\User\Desktop\source.xlsx") 'Adjust
Set sht = xlBook.Worksheets("DATA")
xlApp.DisplayAlerts = False
sht.Range("A:CJ").AutoFilter Field:=56, Criteria1:="CMR"
sht.Range("A:B").Copy: sht2.Range("A1").PasteSpecial xlPasteValues
sht.Range("E:F").Copy: sht2.Range("G1").PasteSpecial xlPasteValues
sht.Range("N:N").Copy: sht2.Range("I1").PasteSpecial xlPasteValues
sht.Range("P:P").Copy: sht2.Range("F1").PasteSpecial xlPasteValues
xlBook.Close
xlApp.Quit
End Sub