Excel VBA 将工作表保存到路径作为 Excel 文件并覆盖文件

Posted

技术标签:

【中文标题】Excel VBA 将工作表保存到路径作为 Excel 文件并覆盖文件【英文标题】:Excel VBA Saving Sheet to Path as Excel File and Overwriting File 【发布时间】:2021-03-03 18:55:06 【问题描述】:

我在获得一些非常基本的工作时遇到了一些麻烦。有什么想法吗?

Sub Test()

Application.DisplayAlerts = False


ThisWorkbook.Sheets("Master List").SaveAs "C:\Test\ART.xlsx", 52

Application.DisplayAlerts = True

End Sub

【问题讨论】:

Copy 先工作表再保存ActiveWorkbook? 【参考方案1】:

导出工作表

Option Explicit

Sub exportSheet()
    
    Const FolderPath As String = "C:\Test\"
    Const FileName As String = "ART.xlsx"
    Const SheetName As String = "Master List"
    
    On Error Resume Next
    Workbooks(FileName).Close
    On Error GoTo 0
    
    With ThisWorkbook
        Application.ScreenUpdating = False
        .Sheets(SheetName).Copy
        With ActiveWorkbook
            Application.DisplayAlerts = False
            .SaveAs FolderPath & FileName, xlOpenXMLWorkbook ' 51 (.xlsx)
            Application.DisplayAlerts = True
            .Close False
        End With
        ' Open Folder Path in Windows File Explorer.
        '.FollowHyperlink FolderPath
        '.Close
        Application.ScreenUpdating = True
    End With
    
End Sub

【讨论】:

VBasic,为您提供 2 个快速问题。我正在运行它并且它有效,但是对于我正在解决的特定场景有 2 个陷阱.. 1 - 是否可以粘贴值而不是粘贴公式? 2 - 是否有一种合乎逻辑的方法来控制多个用户可以运行保存和覆盖文件的权限?我注意到如果我运行该进程并保存文件,然后其他人运行它,它会出错并说权限不存在。很好的解决方案,无论哪种方式,感谢您的帮助! 如果复制的值没问题,那么你可以例如在.Sheets(SheetName).Copy 之后执行ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value。如果没有,你将不得不使用另一种方式来复制。抱歉,我对权限一无所知。

以上是关于Excel VBA 将工作表保存到路径作为 Excel 文件并覆盖文件的主要内容,如果未能解决你的问题,请参考以下文章

使用Excel VBA,如何将某一个工作表保存到新建的Excel中?

Access VBA中一列的总和

Excel 2010 vba 复制选择工作表,保存并关闭两个工作簿

Excel VBA保存截图

将excel中数据保存至另一个excel中用vba

Excel-VBA 工作表拆分和保存以逗号分隔的许多空白列结束