根据条件将数据从一个工作簿传输到另一工作簿的不同选项卡

时间:2018-08-03 15:10:05

标签: vba excel-vba

当前,我正在尝试根据数据类型将数据从工作簿中的一个工作表(我称为复制工作簿)传输到另一工作簿中的不同工作表(我将其称为粘贴工作簿)。

例如,在复制工作簿中,将有一个列用于“原因类型”。如果原因类型为“结束”,则该行中的某些数据(不是全部)将被传输到粘贴工作簿中的“结束”选项卡。如果原因类型为“短”,则同样。然后,“ 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还是完全陌生的,所以如果我的某些问题显得“愚蠢”,我深表歉意。预先感谢大家!

1 个答案:

答案 0 :(得分:0)

您没有完全限定要打开的工作簿。

 Set wbk1 = Workbooks.Open("walmart.xlsm")

不会告诉编译器它是什么工作簿,或更重要的是,它在哪里。编译器不假定目录/ UNC路径,必须提供。