从已关闭的Excel文件导入数据

时间:2015-06-16 01:13:01

标签: excel excel-vba vba

我知道这个问题已经在网站上通过一些例子得到了回答,但是使用这里的任何一个例子我仍然无法让它们发挥作用。这就是我所拥有的,我在Set rng1 = b1.sht1.Range("A1")时遇到了问题。我是编码的新手,这看似合乎逻辑,但无法弄清楚任何帮助将不胜感激。我需要做的就是在一个打开的excel文件中打开另一个文件并将数据从sheet1复制到打开的工作簿中的数据选项卡。

Sub OpenWorkbookToPullData()
    Dim path As String
    path = "S:\GAM\Middle Office\Equity Admin\aa_RawDataFiles\CollateralUtilisation.xls"

    Dim currentWb As Workbook
    Set currentWb = ThisWorkbook

    Dim openWb As Workbook
    Set openWb = Workbooks.Open(path)

    Dim openWs As Worksheet
    Set openWs = openWb.Sheets("Sheet1")

    Dim b1 As Workbook
    Dim b2 As Workbook

    Set b1 = Workbooks("CollateralUtilisation.xls")
    Set b2 = Workbooks("Collateral Management.xlsm")

    Dim sht1 As Worksheet
    Dim sht2 As Worksheet

    Set sht1 = b1.Sheets(1)
    Set sht2 = b2.Sheets("DATA")

    Dim rng1 As Range
    Dim rng2 As Range

    Set rng1 = b1.sht1.Range("A1")
    Set rng2 = sht2.Range("A1")

    rng1 = rng2

    Debug.Print "rng1 holds: "; rng1 & vbNewLine & "rng2 holds: " & rng2


    'openWb.Close (False)
End Sub

1 个答案:

答案 0 :(得分:2)

更改

Set rng1 = b1.sht1.Range("A1")

Set rng1 = sht1.Range("A1")

您不需要b1。已使用Sht1

中的b1定义Set sht1 = b1.Sheets(1)

这就像你对Set rng2 = sht2.Range("A1")

所做的那样

使用ADO从已关闭的Excel文件导入。您可能还想查看Import data from a closed workbook (ADO) using VBA in Microsoft Excel