Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将数据从一个工作簿复制到另一个工作簿,超出范围?_Vba_Excel - Fatal编程技术网

Vba 将数据从一个工作簿复制到另一个工作簿,超出范围?

Vba 将数据从一个工作簿复制到另一个工作簿,超出范围?,vba,excel,Vba,Excel,大家好,我正在尝试将数据从一个工作簿复制到另一个工作簿,以便从这些数据创建图形/度量,这给了我很多麻烦。这段代码是从网上下载的,或者是用宏录制器制作的,我正试着一行一行地修改它,直到它正常工作。它给了我一个超出范围的错误,当它在我的驱动器中打开我的文件后,我逐行调试它(根据我从的论坛,它应该在不打开它的情况下获取文件)。这是什么原因造成的 我是VBA/编程的新手,请原谅我的无知。此外,我还更改了大多数变量名/一些注释,因为这与工作有关。Excel 2010,如果相关的话 谢谢 试试这个(只是稍微

大家好,我正在尝试将数据从一个工作簿复制到另一个工作簿,以便从这些数据创建图形/度量,这给了我很多麻烦。这段代码是从网上下载的,或者是用宏录制器制作的,我正试着一行一行地修改它,直到它正常工作。它给了我一个超出范围的错误,当它在我的驱动器中打开我的文件后,我逐行调试它(根据我从的论坛,它应该在不打开它的情况下获取文件)。这是什么原因造成的

我是VBA/编程的新手,请原谅我的无知。此外,我还更改了大多数变量名/一些注释,因为这与工作有关。Excel 2010,如果相关的话

谢谢

试试这个(只是稍微修改一下你的代码):

或者我发现它更强大:

Sub FileFromClosedWorkbook()

    Dim Var1 As String, Var1R As String
    'Assign variable name to Target workbook
    Var1 = ActiveWorkbook.Name
    'Assign variable name to Target range
    Var1R = "A1:I50000"

    'Open Source WorkBook
    Application.Workbooks.Open ("S:\Lab Data.xslxm")

    Dim Var2 As String, Var2R As String
    'Assign variable name to Source workbook
    Var2 = ActiveWorkbook.Name
    Var2R = "Chemical"

    'Copy from Source to Target
    Workbooks(Var2).Sheets(Var2R).Columns("A:H").EntireColumn.Copy _
    Destination:=Workbooks(Var1).Sheets("Data").Range(Var1R)
    'Close Source WorkBook wo/Save
    Workbooks(Var2).Close False

End Sub

注释部分
工作簿。打开文件名:=“S:\private”工作表(“数据”)。是否激活?您的工作簿“私人”中是否有名为“数据”的工作表。另外,我认为您应该在文件名中提供扩展名。我有意将其注释掉,因为顶部部分应该在不打开数据的情况下获取数据。我在两个工作簿(我将要复制到的工作簿)中的一个工作簿中有一个名为Data的工作表。这两个文件都是.xlsxm,导致
超出范围的确切行是什么?源工作簿中是否有名为“private”的工作表?“下标超出范围”,实际文件的名称不同,我只是更改了它,因为它是工作文件。呸,我尝试了第二个,但仍然没有成功。我想如果它使它更容易理解,那么S驱动器中的文件只需调用“Lab Data.xslxm”,Var2R将是“化学的”(但是一张表,而不是文件)。我仍然收到一个“下标超出范围”错误。它打开了实验室数据文件,我认为这是不应该发生的?你确定“数据”和“化学”表的名称前后没有空格吗。它必须是完全相同的名字。打开工作簿而不实际查看是不可能的。您可以使用VBScript,也可以尝试或。名称前后没有空格,这真的很奇怪。我已更正,我确实有一些名称错误。非常感谢你!!
Sub FileFromClosedWorkbook()

    Dim Var1 As String, Var1R As String
    'Assign variable name to Target workbook
    Var1 = ActiveWorkbook.Name
    'Assign variable name to Target range
    Var1R = "A1:I50000"

    'Open Source WorkBook
    Application.Workbooks.Open ("S:\Lab Data.xslxm")

    Dim Var2 As String, Var2R As String
    'Assign variable name to Source workbook
    Var2 = ActiveWorkbook.Name
    Var2R = "Chemical"

    'Copy from Source to Target
    Workbooks(Var2).Sheets(Var2R).Columns("A:H").EntireColumn.Copy _
    Destination:=Workbooks(Var1).Sheets("Data").Range(Var1R)
    'Close Source WorkBook wo/Save
    Workbooks(Var2).Close False

End Sub
Sub FileFromClosedWorkbook()

    Dim Var1 As String, Var1R As String
    'Assign variable name to Target workbook
    Var1 = ActiveWorkbook.Name
    'Assign variable name to Target range
    Var1R = "A1:I50000"

    Dim sourceWB As Workbook
    'Open Source WorkBook
    Set sourceWB = Application.Workbooks.Open("S:\Lab Data.xslxm")

    Dim Var2R As String
    'Assign variable name to Source workbook
    Var2R = "Chemical"

    'Copy from Source to Target
    sourceWB.Sheets(Var2R).Columns("A:H").EntireColumn.Copy _
    Destination:=Workbooks(Var1).Sheets("Data").Range(Var1R)
    'Close Source WorkBook wo/Save
    sourceWB.Close False

End Sub