【问题标题】:VBA excel open file and copy worksheet error subscript out of rangeVBA excel打开文件并复制工作表错误下标超出范围
【发布时间】:2021-02-18 06:40:02
【问题描述】:

我正在尝试将工作表从另一个 excel 文件复制到其中一个工作表,但出现下标超出范围错误。错误来自这一行,'.Worksheets(1).UsedRange.Copy ThisWorkbook.Worksheets("Sheet1").Range("A1")'。

Dim FileToOpen As Variant
Application.ScreenUpdating = False
FileToOpen = Application.GetOpenFilename _
(Title:="Please choose a Excel File to Open", _
FileFilter:="Excel Files *.xlsx(*.xlsx),")
If VarType(FileToOpen) = vbBoolean Then
   MsgBox "No file selected", vbExclamation, "Sorry!"
    Exit Sub
End If
Debug.Assert VarType(FileToOpen) = vbString
With Application.Workbooks.Open(FileToOpen)
  .Worksheets(1).UsedRange.Copy ThisWorkbook.Worksheets("Sheet1").Range("A1")
  .Close
End With

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    下面试试

    Dim FileToOpen As Variant
    dim tempFile as workbook
    dim tempWs as worksheet
    dim thisWs as worksheet
    
    Application.ScreenUpdating = False
    set thisWs = ThisWorkbook.Worksheets("Sheet1")
    
    FileToOpen = Application.GetOpenFilename _
    (Title:="Please choose a Excel File to Open", _
    FileFilter:="Excel Files *.xlsx(*.xlsx),")
    If VarType(FileToOpen) = vbBoolean Then
       MsgBox "No file selected", vbExclamation, "Sorry!"
       Exit Sub
    End If
    Debug.Assert VarType(FileToOpen) = vbString
    set tempFile =Workbooks.Open(FileToOpen)
    set tempWs  = tempFile.worksheets(1)
    
    tempWs  .cells.Copy thisWs.Range("A1")
    tempFile .close 
    
    set tempFile = nothing
    set tempWs  = nothing
    
    Application.ScreenUpdating = true
    

    【讨论】:

    • 它仍然不起作用,并且在这一行出现错误: tempWs .UsedRange.Copy ThisWorkbook.Worksheets("Sheet1").Range("A1")
    • 我编辑代码并在主工作簿上添加声明 ws 的行。如果仍然无法正常工作,请确保您在主工作簿上有名为 Sheet1 的工作表并且它是不安全的
    猜你喜欢
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多