使用Inputbox VBA分配变量工作簿名称

时间:2018-04-18 19:52:01

标签: excel vba excel-vba

我希望将一个输入框字符串分配给工作簿名称,以便将数据从一个工作表操作到下一个工作表。例如,当我生成报告时,会为其分配一个临时文件名" tmp1" " TMP2"我想使用另一个excel表作为一个程序,它将运行一个宏,以便对新生成的文件进行排序,复制等,只需要输入临时文件的名称" tmp1&#34 ;等

我可以运行我需要的宏,并且熟悉' With'允许我这样做的陈述。我的问题是当我运行以下代码时:

Sub MyMacro()
Dim wb As Workbook
Dim X As String
X = InputBox("Set work book name")
Set wb = Workbooks(X)

With Workbooks(x)
.'code is entered here'
End with
End sub

我遇到了一个对象错误。我似乎错误地引用了新文件。任何帮助将不胜感激

由于

1 个答案:

答案 0 :(得分:0)

如果您尝试创建新的临时工作簿并为其指定文件名,请尝试:

Sub MyMacro()

    Dim X As String
    X = InputBox("Set work book name")
    Workbooks.Add

    ActiveWorkbook.SaveAs Filename:="C:\Users\garys\Desktop\" & X & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

    With ActiveWorkbook
        'code is entered here'
    End With
End Sub

(当然,您将使用自己的文件夹名称和文件类型)

修改#1: 特别是在你的代码中,尝试替换:

With Workbooks(x)

使用:

With Workbooks(x & ".xlsx")

With Workbooks(x & ".xlsm")

修改#2:

如果您保存为文字,请尝试:

ActiveWorkbook.SaveAs Filename:="C:\Users\garys\Desktop\" & x & ".txt", FileFormat:=xlText, CreateBackup:=False

并参考:

With Workbooks(x & ".txt")