打开后台的工作簿

时间:2014-08-26 06:48:51

标签: excel vba

我正在尝试打开后台的工作簿。

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

但我只有文件名,而不是整个路径和文件名。

3 个答案:

答案 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对象工作簿,工作表,单元格和范围对于计算机来说非常慢。