【问题标题】:Excel VBA Code - How to call certain actions to files createdExcel VBA 代码 - 如何对创建的文件调用某些操作
【发布时间】:2016-11-01 10:06:49
【问题描述】:

我正在用 Excel VBA 编写一段代码,我需要在其中创建一个宏,该宏允许用户单击 ActiveX 按钮,然后将文件保存到指定位置。创建此新文件后,我想编写代码,以便新文件(成功保存在备用指定位置)不存在 ActiveX 命令按钮。此外,一旦从原始文件中单击按钮,我想以某种方式关闭主文件并自动打开新保存的文件。请问有人可以帮忙吗?

到目前为止的代码:

Sub CommandButton1_Click()

    ActiveSheet.Copy
    Dim SaveName As String
    SaveName = ActiveSheet.Range("C1").Text
    With ActiveWorkbook
    .SaveAs "File path Specified" & _
    SaveName & ".xls"
    .Close 0
    End With

End Sub

【问题讨论】:

    标签: excel macros activex


    【解决方案1】:

    我的第一个解决方案(取决于您真正需要做什么)如下:

    首先你需要这个:

    Me.SaveCopyAs "<full_Path>"
    

    在此处查看更多信息:https://msdn.microsoft.com/en-us/library/office/ff835014.aspx

    这将使用您想要的任何名称创建文件的副本到指定路径。在你这样做之前,你可以隐藏你的按钮,然后使用另存为副本来保存它并隐藏按钮。

    最后,如果您想关闭原件并打开副本,那么您必须为副本指定一个不同的名称。然后打开新文件,关闭原文件。

    您的代码应如下所示:

    Sub CommandButton1_Click()
        ActiveSheet.Copy
        Dim SaveName As String
        SaveName = ActiveSheet.Range("C1").Text
        With ActiveWorkbook
            .Worksheets("<your_worksheet>").CommandButton1.visible = False
            .SaveCopyAs "File path Specified" & SaveName & ".xls"
        End With
        Workbooks.Open ("File path Specified" & SaveName & ".xls")
        Workbooks("<Original_name.xlsm>").close False
    End Sub
    

    另一种解决方案是使用 SaveAs 保存工作簿。在此之前保存原件。隐藏按钮。 saveas 会自动关闭原始文件并自动打开新文件。

    您的代码应如下所示:

    Sub CommandButton1_Click()
        ActiveSheet.Copy
        Dim SaveName As String
        SaveName = ActiveSheet.Range("C1").Text
        With ActiveWorkbook
            .Save
            .Worksheets("<your_worksheet>").CommandButton1.visible = False
            .SaveAs "File path Specified" & SaveName & ".xls"
        End With
    End Sub
    

    【讨论】:

    • 你好 Blenikos。感谢您的回答。当我使用它时,带有 .CommandButton1.Visible=False 的行返回一个错误,指出对象不支持此属性或方法?
    • 我没有测试过代码,所以可能有一些错误。我需要你的excel文件来测试它。但是,我已经编辑了我当前的答案,现在它应该可以工作了。如果有请告诉我!
    • 嗨 Blenikos,在我们拥有 .Worksheets("") 的 aprt 上,我需要写下我的文件位置和文件名吗?还是只是工作表名称?
    • 非常感谢!那行得通。你确实是一个救生员!
    • @Syed 很高兴它成功了!据我了解,您是 SO 的新手,所以欢迎来到我们的社区。请浏览网站的工作原理,如果上述答案有帮助,请接受(答案左侧的大勾号),以帮助未来的用户更轻松地找到答案
    猜你喜欢
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    相关资源
    最近更新 更多