Excel VBA:在执行操作时将工作簿中的工作表导入另一个工作簿

时间:2014-08-01 14:42:26

标签: excel vba excel-vba

目标:我想将工作表从workbook1导入到workbook3,但在此之前我想从workbook1添加导入工作表。添加等于一个列,并从第三个工作簿 - 工作簿2进行计算。

设置:我希望工作簿3中的一个按钮提示文件1 - 工作簿1和文件2 - 工作簿2,然后它将工作簿2中的计算数据附加到工作簿1中的列,然后导入整个工作表两个工作簿3工作簿的文件名或workbook1中的工作表名称。

为什么呢? 这是一个购买的东西,我得到了一个工作簿 - 工作簿1,具有一组行(供应商)的交付准确率百分比。但是,如果这个百分比是基于一个PO线(采购订单线)或100(后者表示更多可靠的百分比),我不能仅从工作簿1中知道。这些数据可以在工作簿2中找到。每行都是一个PO行,并且有一个列表示它是哪个供应商 - SupplierID。

甚至可以在某种“临时”模式中进行计算吗?我想要有一个像两个长度相同的数组列表的操作,一个包含(创建)供应商ID,另一个包含该供应商的相应的PO行数。我想在woorkbook2中的数组的for循环中,只要循环再次遇到与同一供应商的行,就会向array2追加+1(PO-line)。

当数组完成后,我只需要在workbook1中执行一个行循环来写出PO行的汇总数据(每个供应商一行)。当我有一张包含所有信息的表格时。它只会导入到workbook3,其名称为workbook1或工作簿1中的工作表。

有可能吗?或者你有什么其他建议基于我想要实现的内容,因为数据包含在两个不同的工作簿中,并且我需要workbook3,我每月编译这种数据(所以这个文件中已有历史记录 - workbook3)。当然,在尝试实现此目标时,我需要最少的手动步骤。

谢谢!

1 个答案:

答案 0 :(得分:0)

类似的东西:

Sub Tester()

Dim wb1 As Workbook, wb2 As Workbook
Dim v1, v2

    Set wb1 = PromptForWorkbook("Select first input file")
    If wb1 Is Nothing Then Exit Sub

    Set wb2 = PromptForWorkbook("Select second input file")
    If wb2 Is Nothing Then Exit Sub

    v1 = wb1.Sheets("Sheet1").Range("A10").Value
    v2 = wb2.Sheets("Sheet2").Range("C3").Value

    'etc etc

    wb1.Close False 'don't save changes
    wb2.Close False 'don't save changes

End Sub

Function PromptForWorkbook(sMsg As String) As Workbook
    Dim f, wb As Workbook
    f = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*", _
                                    Title:=sMsg, MultiSelect:=False)
    If f <> False Then
        Set wb = Workbooks.Open(f)
    End If
    Set PromptForWorkbook = wb
End Function