我在公司中处理一些零售商的订单处理,并在excel工作表中处理订单。我从查询中为每个零售商导入数据,并且在4个或5个不同帐户中,此过程相同。但是后面的步骤有所不同,因此每个零售商都有自己的工作簿。
我正在尝试通过使用工作簿以及VBA中的公式来自动化将数据从查询导入到每个工作簿的过程。但是我想将这些宏合并到一个工作簿中(基本上是其他工作表可以从中调用的宏数据库),因为我不想每次进行调整时都必须在5个单独的工作簿中更改代码。
我已经尝试将代码放入宏数据库中,然后仅从每个单独的工作簿中调用该宏,而其中的某些功能已经起作用。
这是我最初在每个工作簿中拥有的宏之一,并且在每个工作簿中都可以正常工作。
Private Sub OrderNumbers()
Dim myValue1 As Variant
Dim myValue2 As Variant
myValue1 = InputBox("What is your first order number?")
myValue2 = InputBox("What is your last order number?")
Range("A7").Value = myValue1
Range("A9").Value = myValue2
End Sub
这是另一个宏。
Private Sub FillFormulas()
Dim myValue3 As Long
myValue3 = Range("A13").Value
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B" & myValue3)
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C" & myValue3)
Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D" & myValue3)
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E" & myValue3)
Range("F2").Select
Selection.AutoFill Destination:=Range("F2:F" & myValue3)
Range("G2").Select
Selection.AutoFill Destination:=Range("G2:G" & myValue3)
Range("H2").Select
Selection.AutoFill Destination:=Range("H2:H" & myValue3)
Range("I2").Select
Selection.AutoFill Destination:=Range("I2:I" & myValue3)
Range("J2").Select
Selection.AutoFill Destination:=Range("J2:J" & myValue3)
End Sub
然后,我将代码移到数据库中,并在每个零售商工作簿中,将此代码连接到按钮上:
Private Sub Start_Click()
Excel.Run "Macros.xlsm!OrderNumbers()"
End Sub
对于OrderNumbers()宏,它会调用它,但是由于某种原因它会两次调用它。但是,FillFormulas()宏根本不起作用。
答案 0 :(得分:2)
Application.Run
Application.Run "'Another Workbook.xlsm'!NameOfMacro"
工作簿名称包含空格时,需要使用'
标记。如果没有空格,则不需要'
标记。如果包含这些代码,它们仍然可以正确运行,因此,我建议使用它们以保持一致性。
注意::包含宏必须的workbook
已打开。如果workbook
未打开,则需要在运行宏之前将其打开。
希望这会有所帮助,等待您的反馈。
奖金最好避免使用select
,所以我为您做到了:
Private Sub FillFormulas()
Dim myValue3 As Long
myValue3 = Range("A13").Value
Range("B2").AutoFill Destination:=Range("B2:B" & myValue3)
Range("C2").AutoFill Destination:=Range("C2:C" & myValue3)
Range("D2").AutoFill Destination:=Range("D2:D" & myValue3)
Range("E2").AutoFill Destination:=Range("E2:E" & myValue3)
Range("F2").AutoFill Destination:=Range("F2:F" & myValue3)
Range("G2").AutoFill Destination:=Range("G2:G" & myValue3)
Range("H2").AutoFill Destination:=Range("H2:H" & myValue3)
Range("I2").AutoFill Destination:=Range("I2:I" & myValue3)
Range("J2").AutoFill Destination:=Range("J2:J" & myValue3)
End Sub