将值从30本书复制到一本书-Excel VBA

时间:2019-06-03 01:39:57

标签: excel vba excel-2010

我正在尝试将excel的30本书中的值复制到另一本书excel中,但是由于它们的名称不同,我不确定如何引用这30本书。而且我不知道如何引用excel的文件我要关闭。

我正在运行Excel手册中的宏,它将具有其他excel的所有值。

我的问题是:

  1. 不知道如何引用即将打开的Excel工作簿,因为它们的名称不同。
  2. 如何使用偏移量粘贴值。

我有此代码:

      Sub MacroPrueba4()

    'Paso 1: Declarar las variables

     Dim Archivos As String
     Dim vals As Variant


       Worksheets("Hoja1").Range("A3:A7").Copy
        vals = Worksheets("Hoja1").Range("A2:F14").Value

     Archivos = Dir("C:\Users\fernandofernandez\Desktop\Prueba\*.xlsx")
     Do While Archivos <> “”


     'Paso 3: Open the books one by one

     Workbooks.Open "C:\Users\fernandofernandez\Desktop\Prueba\" & Archivos

    'code

        vals = Worksheets(1).Range("E2").Value


 ' this is something i use to paste the format of the last column format

    Workbooks("libro2").Range("C10").End(xlToRight).Select
    Selection.EntireColumn.Select
    Selection.Copy
    ActiveSheet.Range("C10").End(xlToRight).Offset(0, 1).Select
    Selection.EntireColumn.Select
    ActiveSheet.Paste
    'Selection.Paste

' this is where I will paste de value

' is this right??
ActiveSheet.Range("C10").End(xlToRight).Offset(0, 1).Select
 Selection.Value = vals


     'this close the active excel, but I think it would close the excel that I am pasting the values, because it would be the activeworkbook. I want to close only the 30 excels that will open in the loop.

     ActiveWorkbook.Close SaveChanges:=True



     Archivos = Dir
     Loop
    End Sub

2 个答案:

答案 0 :(得分:0)

函数Workbooks.Open使工作簿打开,因此您可以编写:

my_workbook = Workbooks.Open "C:\Users\fernandofernandez\Desktop\Prueba\" & Archivos

' Your code

my_workbook.Close SaveChanges:=True

以此确保您关闭了正确的书。 对于分配值,如果您想使用干净的代码,请不要使用select

您可以:

ActiveSheet.Range("C10").End(xlToRight).Offset(0, 1).value = vals

不客气。

答案 1 :(得分:0)

合并文件夹中所有工作簿中的数据。

newNode

有关所有详细信息,请参见下面的链接。

https://www.rondebruin.nl/win/s3/win008.htm

您可能还想考虑使用此实用程序。

https://www.rondebruin.nl/win/addins/rdbmerge.htm