【问题标题】:Export excel range as a new excel sheet with save as dialog box使用另存为对话框将 excel 范围导出为新的 excel 工作表
【发布时间】:2013-06-11 11:07:31
【问题描述】:

我想在 Excel 工作表中创建一个按钮,该按钮将复制特定范围(命名范围),然后打开“另存为”对话框,用户可以选择位置并将该范围保存为新的 Excel 工作表。这可能吗?

我可以编写一个将命名范围复制到剪贴板的代码,然后用户可以将其粘贴到 MS word 等中。下面是我到目前为止的代码。

Sub copyValueTable()
  Dim oRange As Range
  Set oRange = Sheets("Analysis").Range("FullValueTable")
  oRange.CopyPicture xlScreen, xlPicture
  oRange.Copy
End Sub

【问题讨论】:

    标签: excel export-to-excel vba


    【解决方案1】:

    试试下面的代码:

    Sub copyValueTable()
    
        On Error Resume Next
    
        Dim rng As Range
        Dim wkb As Workbook
        Dim sht As Worksheet
    
        Set rng = Application.InputBox("Please select the range" & vbNewLine & "Enter named range", Type:=8)
    
        On Error GoTo 0
    
        If Not rng Is Nothing Then
            fileSaveName = Application.GetSaveAsFilename(fileFilter:="xls Files (*.xls), *.xls")
            If fileSaveName <> False Then
    
                ActiveSheet.Copy
                Set wkb = ActiveWorkbook
                Set sht = wkb.Sheets(1)
                sht.Cells.Clear
                rng.Copy sht.Range("A1")
    
                wkb.SaveAs fileSaveName
                wkb.Close
            End If
        End If
    End Sub
    

    【讨论】:

    • 嗨,Santosh,您的解决方案有效,但它也保存了所有对象(按钮、下拉菜单等)。我该怎么办?
    • 试试Sheet1.Cells.Delete而不是sht.Cells.Clear
    • 感谢您的迅速回复。我试过了,现在它正在保存整张纸。以前它是保存范围和对象。
    • 它也在复制整个工作表..甚至工作表名称(分析)也在保存。我认为这与 ActiveSheet.Copy 有关
    • 在您的答案中添加 sht.DrawingObjects.Delete 在 rng.Copy sht.Range("A1") 之后。这将从图纸中删除所有绘图对象。谢谢桑托什
    猜你喜欢
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 2021-08-26
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多