我正在尝试打开后台的工作簿。
Dim app As New Excel.Application
app.Visible = False
Dim book As Excel.Workbook
Set book = app.Workbooks.Add(UserForm1.TextBox1.Text)
我从文本框中获取文件名。
我遇到了崩溃:
Sheets("Start").select
我想后台的工作簿不是活动的。我该如何激活它?
我的想法是:
Workbooks(UserForm1.TextBox1.Text).Activate
但我只有文件名,而不是整个路径和文件名。
答案 0 :(得分:0)
你可以试试
book.Sheets("Start").select
我认为更好的方法是使用with语句
With book.Sheets("Start")
.cells("A1").Select
End With
答案 1 :(得分:0)
您可以使用book.Activate
后跟要在新工作簿上执行的任何代码。请注意,大多数操作都可以在不使用.Select
的情况下完成。有关详细信息,请参阅How to avoid using Select in Excel VBA macros。
答案 2 :(得分:0)
始终避免选择或激活任何内容,无论是单元格,范围,工作表还是工作簿。
编写代码时请参阅
Workbooks("freds wrk").Worksheets("Start").Cells(1, 1)
Workbooks("freds wrk").Worksheets("Start").Range("A1")
您也可以使用With命令缩短它。
With Workbooks("freds wrk").Worksheets("Start")
.Cells(1, 1)
.Range("A1")
end with
当你的代码运行时,最终用户只会开始点击按钮,然后一切都会出错,因为你认为有效的是没有长时间活动的。而你所选择的内容已经不复存在了。
当你开始在代码中间调用sub时,问题会变得更糟。你怎么能知道现在哪个工作表是活动的,以及你刚刚调用的子工具现在选择了什么。
with语句将使您的代码运行得更快。 Excel对象工作簿,工作表,单元格和范围对于计算机来说非常慢。