我需要在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先生上有一个答案可以帮助你:从工作簿导出模块到工作簿
下面是代码,请根据您的具体需求进行调整
'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
不幸的是,建议的方法对我没有用处。我用另一种方法解决了我的问题。在我的模块中,而不是把结果放在一个新文件中,我把信息放在一个新的表格中,最后我删除了额外的表格,并以新的名称保存了文件。就这样,我的问题解决了。谢谢您的合作