Excel VBA - 我可以操作另一个工作簿上的数据吗?

时间:2014-03-11 08:26:27

标签: excel vba excel-vba

背景:

每个月我都需要运行一份报告。但是,在我能够做到这一点之前,我必须将一些数据导出到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 个答案:

答案 0 :(得分:2)

作为评论的后续跟踪,工作簿Book1已在 Application对象的另一个实例中打开。

在这种情况下,此代码应该可用(对于已打开的工作簿):

Sub Data_Ready_For_Transfer()
    Dim wb As Workbook

    Set wb = GetObject("Book1")

    'if we get workbook instance then
    If Not wb Is Nothing Then
        With wb.Worksheets("Sheet1")
            .Cells.RowHeight = 15
        End With
    End If
End Sub

还有一个问题,我已将Cells.RowHeight = 15更改为.Cells.RowHeight = 15以指定Cells属于工作簿Book1Sheet1