关于vba:如何激活特定的工作簿和特定的工作表?

您所在的位置:网站首页 vba指定workbook 关于vba:如何激活特定的工作簿和特定的工作表?

关于vba:如何激活特定的工作簿和特定的工作表?

2023-05-11 21:33| 来源: 网络整理| 查看: 265

如何从"当前"工作簿中激活"其他"工作簿?我有一个当前的工作簿,带有dumb.xls,另一个工作簿的名称为Tire.xls。我已经使用worksbooks.open filename:="name of the file"从dumb.xls中打开了Tire.xls。它正在打开,但问题是我无法使其正常工作。

如果我说cells(2,24).value=24将这些值放在dumb.xls的单元格中,但我希望将其完成一个Tire.xls。

activesheet.cells(2,24).value=24将它们放在Tire.xls上。但是,我该如何使用名称激活工作簿?我需要打开3到4个excel工作簿并执行操作?我如何激活特定的工作簿

我在Google上找到了此代码

12     activeworkbook.worksheet("sheetname").activate  ' but not working      windows("sheetname").activate ' people on google suggested not to use

它没有被激活。我不知道如何使它工作。谁能告诉我如何激活一个特定的工作簿和另一个工作簿的特定工作表?

示例:我从dumb.xls工作簿中打开了niko.xls和niko_2.xls作为工作簿,所以总共3个工作簿,我必须激活niko_2.xls工作簿的第二张纸。我该如何做?谁能用这些例子向我解释语法?先感谢您

您无需激活工作表(实际上,这样做会给性能带来巨大影响)。由于要为工作表声明一个对象,因此在调用以" wb"开头的方法时。您正在选择该对象。例如,您可以在工作簿之间跳转而无需激活如下所示的任何内容:

123456789101112Sub Test() Dim wb1 As Excel.Workbook Set wb1 = Workbooks.Open("C:\\Documents and Settings\\xxxx\\Desktop\\test1.xls") Dim wb2 As Excel.Workbook Set wb2 = Workbooks.Open("C:\\Documents and Settings\\xxxx\\Desktop\\test2.xls") wb1.Sheets("Sheet1").Cells(1, 1).Value = 24 wb2.Sheets("Sheet1").Cells(1, 1).Value = 24 wb1.Sheets("Sheet1").Cells(2, 1).Value = 54 End Sub 相关讨论 有人知道上面的内容为什么会在复制/粘贴时给我一个"编译错误-无效字符"错误吗? 不我正在使用日语键盘,所以谁知道反斜杠或其他字符具有不同的字符代码。尝试粘贴到txt文件中,然后再粘贴Excel?我在Sub Test()下注意到一个""字符,因此我删除了它,以防万一。

您必须设置要打开的工作簿的引用。然后,您可以使用该工作簿的引用对其进行任何操作。

12345Dim wkb As Workbook Set wkb = Workbooks.Open("Tire.xls") ' open workbook and set reference! wkb.Sheets("Sheet1").Activate wkb.Sheets("Sheet1").Cells(2, 1).Value = 123

甚至可以设置对工作表的引用,这将使以后的工作更加轻松:

12345678Dim wkb As Workbook Dim sht As Worksheet Set wkb = Workbooks.Open("Tire.xls") Set sht = wkb.Sheets("Sheet2") sht.Activate sht.Cells(2, 1) = 123

其他人指出,.Activate在您的情况下可能是多余的。在编辑表格单元格之前,您不必严格激活表格。但是,如果您要这样做,那么激活它没有害处-除了对性能的小影响,只要您仅执行一次或几次,就不会引起明显的影响。但是,如果您多次激活,例如循环会大大降低速度,因此应避免激活。

相关讨论 激活(如选择)会给性能带来巨大损失。例如,将上述过程循环10,000次,激活该过程大约需要8秒钟。没有那条线,只需要0.375秒。当然,结果因机器而异。 疾病承认我很惊讶地发现避免选择和激活之间的巨大差异。这是一些REF(激活的提及会影响性能):msdn.microsoft.com/zh-cn/library/ff726673.aspx 是的,很好,但是,如果OP没有循环,那么它将不会引起注意。对此我在答复中加了一个评论。 您是对的,除非您使用了很多激活功能,否则您不会注意到这种差异(IMO还是很高兴知道的)。因为我喜欢夸张的结果,所以我尝试将其循环100万次。没有.activate的话,要花35秒,而花了13分钟! :p 嗯,这就是您先前的结果乘以100的结果,这是可以预期的! 啊哈!并没有意识到那个和男孩,当我想到它时,我现在感觉有点傻!

你可以试试看

1234Workbooks("Tire.xls").Activate ThisWorkbook.Sheets("Sheet1").Select Cells(2,24).value=24

试试这个

1Windows("name.xls").Activate 相关讨论 您应该解释为什么答案在超过2.5年后仍然有用。关于其他答案,您是否测试过?

对我有用的代码是:

1ThisWorkbook.Sheets("sheetName").Activate

相关讨论 我尝试了这里提到的用于选择工作表的所有方法(实际上是从一个工作表切换到另一个工作表。)但是,我遇到了"应用程序或对象定义的错误"。该工作表存在(我添加了代码以通过msgbox对此进行验证。)请进行指导。

1234Dim Wb As Excel.Workbook Set Wb = Workbooks.Open(file_path) Wb.Sheets("Sheet1").Cells(2,24).Value = 24 Wb.Close

要知道在Wb.Sheets("sheetname")中引用的工作表名称,可以使用以下命令:

1234Dim sht as Worksheet     For Each sht In tempWB.Sheets     Debug.Print sht.Name Next sht

相关讨论 抱歉,让我知道如何激活工作表?您要在其中添加一些值吗?我想在该工作簿中执行所有排序和操作,而不是关闭它?我是否应该始终指示Wb.sheets(" sheet1")......让我知道吗?



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3