将范围复制到新的工作簿 FileDialog 提示不起作用

Posted

技术标签:

【中文标题】将范围复制到新的工作簿 FileDialog 提示不起作用【英文标题】:Copying Range into new Workbook FileDialog prompt not working 【发布时间】:2021-11-24 13:46:14 【问题描述】:

我正在尝试将一些特定单元格复制到运行 VBA 脚本时提示我创建的新工作簿。我一直在 wsI.Range("Y2:AF2882) 上收到 Object 不支持此属性或方法,我的代码有什么问题?

Option Explicit
Sub Export1()

    Dim wbI As Workbook, wbO As Workbook
    Dim wsI As Worksheet, wsO As Worksheet
    Dim Filename As Variant
    
    Set wbI = ThisWorkbook
    Set wbO = Workbooks.Add
    
    Filename = Application.GetSaveAsFilename(Filename, "Excelfile (*.xlsx), *.xlsx")


    With wbO
        Set wsO = wbO.Sheets("Ark1")
        Set wsI = wbI.Sheets("SVK stationer")
        .SaveAs Filename
        
        wsI.Range("Y2:AF2882") _
        .AutoFilter Field:=1, Criteria1:="<>"
        .SpecialCells(xlCellTypeVisible).Copy
       
        wsO.Range("A1").PasteSpecial (xlPasteValuesAndNumberFormats)
    End With
    
End Sub

【问题讨论】:

wsI .Range("Y2:AF2882") 中有一个空格,在wsI 之后,如您所见(从您的代码中复制)。您是从模块中复制代码还是手动编写的?应该是wsI.Range("Y2:AF2882") _ 否则代码行没有任何意义。它应该在下一个代码行继续。这就是“_”字符的意思。 我复制了它,但我想我一开始没有空格,但缺少_。我已经添加了,但现在我在 .SpecialCells(xlCellTypeVisible).Copy 中遇到了同样的错误。可能是一个愚蠢的问题,但在那之前我还需要_ 吗? 你按照我的建议测试了吗? 您是否从某个地方复制了代码?我试图推断缺少什么。该代码可能尝试使用With wsI.Range("Y2:AF2882")(没有结尾的“_”)后跟以点开头的两行,但它在.SpecialCells(xlCellTypeVisible).Copy之后错过了End With,我认为...... 【参考方案1】:

更新re cmets

Option Explicit
Sub Export1()

    Dim wb As Workbook
    Set wb = Workbooks.Add
    wb.Sheets(1).Name = "Arki"

    With ThisWorkbook.Sheets("SVK stationer").Range("Y2:AF2882")
        .AutoFilter Field:=1, Criteria1:="<>"
        .SpecialCells(xlCellTypeVisible).Copy
        wb.Sheets(1).Range("A1").PasteSpecial xlPasteValuesAndNumberFormats
        wb.SaveAs Application.GetSaveAsFilename("", "Excelfile (*.xlsx), *.xlsx")
        'wb.Close False
    End With

End Sub

【讨论】:

以上是关于将范围复制到新的工作簿 FileDialog 提示不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Excel:将工作簿复制到新工作簿

将当前工作簿中的所有工作表复制到新工作簿,但第一张工作表除外

将工作表复制并保存到新工作簿

Excel 宏不会将工作表复制到新工作簿

VBA 如何批量将单元格复制到另一个工作表中

VBA 复制工作表至新的工作簿中的工作表