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
Excel 运行时错误“9”:下标超出范围_Excel_Vba - Fatal编程技术网

Excel 运行时错误“9”:下标超出范围

Excel 运行时错误“9”:下标超出范围,excel,vba,Excel,Vba,我正在尝试将一列从工作簿复制到另一工作簿。这是我的代码和我得到的错误 运行时错误“9”:下标超出范围 必须首先打开文件,使用精确的文件名(包括其绝对路径)和精确的图纸名(包括任何空格) 这还会检查文件是否已打开,以及每个文件中是否存在图纸名称,这可能会解决您的问题- Sub sbCopyRangeToAnotherSheet() Sheets("Sheet1").Range("A1:Z1").Copy Range("A1:Z1").Select Sheets("S

我正在尝试将一列从工作簿复制到另一工作簿。这是我的代码和我得到的错误

运行时错误“9”:下标超出范围


必须首先打开文件,使用精确的文件名(包括其绝对路径)和精确的图纸名(包括任何空格)


这还会检查文件是否已打开,以及每个文件中是否存在图纸名称

,这可能会解决您的问题-

Sub sbCopyRangeToAnotherSheet()

    Sheets("Sheet1").Range("A1:Z1").Copy

     Range("A1:Z1").Select
     Sheets("Sheet2").Activate
     ActiveSheet.Paste

     Application.CutCopyMode = False

     End Sub
或者,如果不想指定固定范围,可以将范围对象声明为“使用EndxlLeft从A1 allleftColumns中选择所有范围”-


我希望它能对您有所帮助。

它现在只是完全崩溃excel。该方法表示文件已打开,然后崩溃,因此我知道代码在第三个工作簿上运行,并且不会崩溃。它现在打开了文件,但没有传输列。我对最后一部分进行了更改,并验证它是否工作!非常感谢。你帮了大忙!除非和HCM_FBL_Person_Template_Sample_是包含工作表索引或名称的变量,否则它们应该用引号括起来,例如:…WorksheetHCM_FBL_Person_Template_Sample_尝试过,但仍然不起作用:/,相同的错误您需要确认每个工作簿和工作表名称的拼写与代码中引号中的拼写完全相同。当然,正如保罗所说,工作簿必须是打开的。我的问题是,它不是从一张工作表复制到另一张工作表,而是从一本工作簿复制到另一本工作簿
Option Explicit

Sub CopyColumn()
    Const FILE1     As String = "C:\TestFile1.xlsx"
    Const FILE2     As String = "C:\TestFile2.xlsx"
    Const SHEET1    As String = "Sheet2"
    Const SHEET2    As String = "Sheet1"
    Const COL1      As String = "A"
    Const COL2      As String = "D"

    Dim wb1 As Workbook, wb2 As Workbook, wb As Workbook, wbInfo As String
    Dim ws1 As Worksheet, ws2 As Worksheet, ws As Worksheet
    Dim sourceColumn As Range, targetColumn As Range

    If Dir(FILE1) > vbNullString And Dir(FILE2) > vbNullString Then
        For Each wb In Workbooks
            wbInfo = "\" & wb.Name
            If InStr(1, FILE1, wbInfo, vbBinaryCompare) > 0 Then Set wb1 = wb
            If InStr(1, FILE2, wbInfo, vbBinaryCompare) > 0 Then Set wb2 = wb
        Next
        If wb1 Is Nothing Then Set wb1 = Workbooks.Open(FILE1)
        If wb2 Is Nothing Then Set wb2 = Workbooks.Open(FILE2)
        If Not wb1 Is Nothing And Not wb2 Is Nothing Then
            For Each ws In wb1.Worksheets
                If ws.Name = SHEET1 Then Set ws1 = ws
            Next
            For Each ws In wb2.Worksheets
                If ws.Name = SHEET2 Then Set ws2 = ws
            Next
            If Not ws1 Is Nothing And Not ws2 Is Nothing Then
                Set sourceColumn = wb1.Worksheets(SHEET1).UsedRange.Columns(COL1)
                Set targetColumn = wb2.Worksheets(SHEET2).UsedRange.Columns(COL2)
                sourceColumn.Copy Destination:=targetColumn
            End If
        End If
    End If
End Sub
Sub sbCopyRangeToAnotherSheet()

    Sheets("Sheet1").Range("A1:Z1").Copy

     Range("A1:Z1").Select
     Sheets("Sheet2").Activate
     ActiveSheet.Paste

     Application.CutCopyMode = False

     End Sub