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



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

例如,在复制工作簿中,会有一列显示"原因类型"。如果原因类型为"结束",则该行中的某些数据(而不是全部(将被传输到粘贴工作簿中的"结束"选项卡。如果原因类型是"短",也是如此。然后,"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完全陌生,所以如果我的一些问题看起来"愚蠢",我深表歉意。提前感谢大家!

您无法完全确定要打开的工作簿。

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

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

相关内容