这里对VBA是新的。 在工作中,我正在创建一个宏,该宏可以从我们每月收到的报告中编译和格式化数据,并且文件名会更改。 由于名称更改,而不必进入 VBE 并从那里更改名称,我是否可以创建一个用户表单,允许我输入工作簿的名称,并且能够将其插入脚本?
到目前为止,我拥有的:
Sub tester()
Dim wbName As String
wbName = Application.InputBox("What is the workbook name?")
If Right(wbName, 4) <> ".xls" Then wbName = wbName + ".xls"
Set mainWB = Workbooks(wbName)
Dim copyThis As Range, pasteThis As Range
Set copyThis = mainWB.Worksheets(2).Columns("F")
Set pasteThis = Workbooks("VBA Workbook.xlsm").Worksheeets(1).Columns("A")
copyThis.Copy Destination:=pasteThis
End Sub
工作簿名称将逐月更改。
欢迎替代解决方案
谢谢大家
假设您的宏在Personal.xlsb
中,并且您有需要引用的工作簿作为ActiveWorkbook
,您可以执行以下操作:
Dim mainWB as Workbook
Set mainWB = ActiveWorkbook
然后,您只需使用mainWB
作为引用,因此:
mainWB.Worksheets("Sheet1").Range("A1")
或者,如果您希望用户输入 WB 名称:
Dim wbName as String
wbName = Application.InputBox("What is the workbook name?")
If right(wbName, 4) <> ".xls" Then wbName = wbName + ".xls"
Set mainWB = Workbooks(wbName)
...
。在InputBox()
情况下,如果用户键入的名称不正确,您可能希望在添加错误处理。