我在谷歌上搜索过这个,并找到了多种解决方案,但没有一个对我有用。我倾向于相信这是因为我在Excel中使用VBA编程的知识和能力有限。如果这是一个重复的问题,问题已经张贴在这里,我道歉。
问题是:
我有一个在打开Excel工作簿上执行的代码。执行的代码将工作簿保存为位于单元格中的值的名称下的新工作簿。我需要在打开Excel工作簿上执行的代码,不要在已经创建的新副本上运行。我能想到的最好的方法就是有一个代码来删除在打开时执行的部分或全部代码。我以前见过这方面的解决方案,我知道有一个解决方案,但我不知道如何将代码正确地实现到我的程序中,所以它可以工作,我甚至不知道我找到的代码是否能工作,这就是为什么我没有在这里提供它。下面是到目前为止,我有一些注释来解释我在代码中需要什么的代码。这方面的任何帮助都将是巨大的。
谢谢
Private Sub Workbook_Open()
'Saves filename as value of C10
Dim newFile As String, fName As String
fName = Range("C10").Value
newFile = fName & " " & Range("E9").Value
ChDir Range("A8")
ActiveWorkbook.SaveCopyAs Filename:=newFile
'Need code to delete a line of code or all code to prevent the code above from executing when the new Worksheet that has been created is opened.
ActiveWorkbook.Close False
End Sub发布于 2018-02-15 16:52:30
这个代码会删除事件。你保存了一份工作簿,所以我的想法是
无论如何,先对它进行几次测试,以确保其工作正常。用VBA本身来修改VBA代码可能会产生一些奇怪的东西。
希望这能有所帮助。
所有学分都归OZGRIZ所有
此外,确保您签入Excel选项->受信任的站点->受信任站点的设置->宏设置->检查对Visual编辑器的信任访问
Sub DeleteWorkbookEventCode()
''Needs Reference Set To _
'"Microsoft Visual Basic For Applications Extensibility"
'Tools>References.
'Also, make sure you check in Excel Options->Trusted Sites->Settings of Trusted Sites-> Macros Setting-> Check Trust access to Visual Basic Editor
Dim i As Integer
Dim MyStart, MyEnd As Integer
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
MyStart = 0
For i = 1 To .CountOfLines Step 1
If .Lines(i, 1) = "Private Sub Workbook_Open()" Then MyStart = i
If .Lines(i, 1) = "End Sub" And MyStart > 0 Then
MyEnd = i
Exit For
End If
Next i
.DeleteLines MyStart, (MyEnd - MyStart) + 1
End With
End Subhttps://stackoverflow.com/questions/48811786
复制相似问题