当前,我正在尝试根据数据类型将数据从工作簿中的一个工作表(我称为复制工作簿)传输到另一工作簿中的不同工作表(我将其称为粘贴工作簿)。
例如,在复制工作簿中,将有一个列用于“原因类型”。如果原因类型为“结束”,则该行中的某些数据(不是全部)将被传输到粘贴工作簿中的“结束”选项卡。如果原因类型为“短”,则同样。然后,“ short”行中的某些数据将被传输到粘贴工作簿中的“ short”选项卡上。总共有4种原因,因此粘贴工作簿中有4个不同的选项卡/工作表。
现在,我正在尝试为不同的工作簿和工作表设置变量,但是我不断收到一条错误消息,提示它们找不到“ walmart.xlsm”文件。但这就是我正在使用的文件的确切名称。
这是我到目前为止所拥有的:
Sub filterbyCustomer() 'Excel VBA autofilter Walmart
Range("A:A").AutoFilter 1, "Walmart", xlFilterValues
End Sub
Sub SortByDate()
Dim rSortRange As Range
Dim ws As worksheet
Set ws = Sheets("data")
Set rSortRange = ws.Range("B2", "B14")
rSortRange.Sort Key1:=ws.Range("B2"), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _
DataOption2:=xlSortNormal, DataOption3:=xlSortNormal
End Sub
Sub foo()
Dim wbk1 As Workbook
Dim wbk2 As Workbook
Dim worksheet1 As worksheet
Dim worksheet2 As worksheet
' Open both workbooks, and worksheets first:
Set wbk1 = Workbooks.Open("walmart.xlsm")
Set wbk2 = Workbooks.Open("dummy.xlsm")
Set worksheet1 = Worksheets.Add("data")
Set worksheet2 = Worksheets.Add("overage")
'Now, copy what you want from wbk1,worksheet1:
wbk1.Sheets("data").Range("A2").Copy
'Now, paste to wbk2,worksheet2:
wbk2.Sheets("overage").Range("A2").PasteSpecial
End Sub
如果有人可以让我知道我在做什么错,那就太好了。另外,我对VBA还是完全陌生的,所以如果我的某些问题显得“愚蠢”,我深表歉意。预先感谢大家!
答案 0 :(得分:0)
您没有完全限定要打开的工作簿。
Set wbk1 = Workbooks.Open("walmart.xlsm")
不会告诉编译器它是什么工作簿,或更重要的是,它在哪里。编译器不假定目录/ UNC路径,必须提供。