【发布时间】:2015-01-30 22:29:41
【问题描述】:
背景:
每个月我都需要生成一份报告。但是,在执行此操作之前,我必须将一些数据导出到 Excel 中。一旦数据在 excel 中,我必须更改一些列并获得正确的格式,然后才能将其附加到另一个文档的末尾以进行一些分析。
我想要什么:
我想要打开附加数据的文档。然后,我将从我的程序中将数据导出到 excel 中(excel 只是打开数据并且它没有保存在任何地方)并从我的较大文档中运行一个 VBA 脚本,该脚本将更改另一个工作簿(Book1)上的数据,以便如果格式正确,可以将其复制到分析文档中。
到目前为止我所拥有的:
我已经开始基本了。到目前为止,我要做的就是将所有单元格设置为正确的高度,以使其更易于阅读。但是,当我运行此代码时,我得到:
运行时错误'9':
下标超出范围
我目前的代码是:
Sub Data_Ready_For_Transfer()
' Format all cell heights to 15
With Workbooks("Book1.xlsm").Worksheets("Sheet1")
Cells.RowHeight = 15
End With
End Sub
代码的With Workbooks("Book1.xlsm").Worksheets("Sheet1") 部分似乎存在问题。我也尝试过With Workbooks("Book1").Worksheets("Sheet1"),并且我已经在打开的、未保存的文档和已保存的工作簿版本上进行了尝试。
我是否遗漏了一些明显的东西?
【问题讨论】:
-
1) 应该打开工作簿
Book1。请再次检查With Workbooks("Book1").Worksheets("Sheet1")- 如果你真的有工作簿Book1opened 和工作表Sheet1,它应该可以工作。 2)您应该使用.Cells.RowHeight = 15instreadCells.RowHeight = 15指定单元格属于book1->sheet1 -
Workbook
Book1已打开,但我仍然遇到问题。 - 感谢其他修改建议。 -
让我们做一个小测试,运行这段代码:
For Each wb In Workbooks: MsgBox wb.Name: Next。有没有弹出你Book1的消息? -
这很有趣。尽管打开了两个工作簿,但它只看到一个。 Book1 不是同一个 excel 实例中的窗口是否重要。而是打开一个新的 Excel 应用程序?
-
我刚刚考虑过:) 当您使用
For Each wb In Workbooks时,它实际上与当前Application的For Each wb In Application.Workbooks相同。如果您有另一个应用程序对象,例如xlApp,您应该使用此应用程序访问工作簿:For Each wb In xlApp.Workbooks