【问题标题】:How to Create New Macro in New File using VBA如何使用 VBA 在新文件中创建新宏
【发布时间】:2022-12-15 11:39:38
【问题描述】:

我需要在 Excel 中使用 VBA 将新宏分配给新文件中的新底部 换句话说,我想在按下按钮(运行宏)时创建一个新文件,其中包含一个将运行预定义宏的按钮。

Sub Shapes()

'Shape 1 Test_Shape

ActiveSheet.Shapes.AddShape(msoShapeBevel, 85.25, 0, 120, 30).Select

Selection.OnAction = "Macro1"

End sub 
'___________________________________________________________________________
Sub Macro1()

'For Example

Cells.Select

End Sub 

谁能帮我?

TNX

我搜索了很多英语和波斯语的网站,但没有得到好的结果 只要文件没有用新名称保存,一切都很好;但是当我用新名称保存文件时,宏不再起作用(它们不会从原始文件转移到新文件)。

【问题讨论】:

    标签: excel vba module save-as


    【解决方案1】:

    Excel先生上有个回答可以帮到你: Exporting module from workbook to workbook

    这是代码,只需根据您的特定需求进行调整

        'Copy macro from main file to extract
        Dim strModuleName As String
        Dim strFolder As String
        Dim strTempFile As String
        ThisWorkbook.Activate              '<= changed
        strFolder = ThisWorkbook.Path      '<= changed
        If Len(strFolder) = 0 Then strFolder = CurDir
        strFolder = strFolder & ""
        strTempFile = strFolder & "~tmpexport.bas"
        On Error Resume Next
        ThisWorkbook.VBProject.VBComponents("Alloc_Date_Button").Export strTempFile '<= changed
      
                'AMEND THE EXPORTED MACRO TO NEW NAME
                Dim objFSO
                Const ForReading = 1
                Const ForWriting = 2
                Dim objTS 'define a TextStream object
                Dim strContents As String
                Dim fileSpec As String
              
                fileSpec = ThisWorkbook.Path & "~tmpexport.bas"
                Set objFSO = CreateObject("Scripting.FileSystemObject")
                Set objTS = objFSO.OpenTextFile(fileSpec, ForReading)
                strContents = objTS.ReadAll
                strContents = Replace(strContents, "Alloc_Date_Button", "Alloc_Date_Button_Export")
                strContents = Replace(strContents, "ALLOC_DATE_UPDATE", "ALLOC_DATE_UPDATE_EXPORT")
              
                objTS.Close
              
                Set objTS = objFSO.OpenTextFile(fileSpec, ForWriting)
                objTS.Write strContents
                objTS.Close
    
      
        Output.VBProject.VBComponents.Import strTempFile '<= changed
        Kill strTempFile
        On Error GoTo 0
    

    【讨论】:

    • 感谢您的回复 我尝试使用此代码,但不幸的是我没有成功 我知道我对“VBA”的了解很低,而且我仍然不熟悉“Dim:”命令来查找问题。但我总是尝试更新我的信息。如果您在回答时附上更多解释,我将不胜感激。我提醒你,我的另一个问题是我的英语不是很流利,而且我大部分时间都使用翻译。所以请理解我
    【解决方案2】:

    不幸的是,建议的方法对我没有用。我用另一种方式解决了我的问题。在我的模块中,我没有将结果放在新文件中,而是将信息放在新工作表中,最后我删除了多余的工作表并用新名称保存了文件。这样,我的问题就解决了。 谢谢您的合作

    【讨论】:

      猜你喜欢
      • 2019-04-29
      • 2013-08-13
      • 2011-07-29
      • 2013-09-20
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多