1
我试图更改我的加载项,以便在打开新工作簿时打开新工作表,然后在该新工作表中创建新的事件过程片。将代码添加到新Excel工作簿的插件
我已经得到的地步,我可以“Sheets.Add”和“.CreateEventProc”使用宏按键组合,但试图使用外接的工作簿的过程自动化时,问题来了。首先加载项加载,因此“Set VBProj = ActiveWorkbook.VBProject”找不到新的活动工作簿。
可以做到这一点吗?如果是这样,是否有需要的工作,或者我只是错过了明显的东西?
这就是我目前所面对的:
Option Explicit
Private WithEvents App As Excel.Application
Private Sub Workbook_Open()
Set App = Excel.Application
End Sub
Private Sub App_NewWorkbook(ByVal Wb As Workbook)
Range("T2").Value = 100
ActiveWorkbook.Sheets.Add
Call CreateEventProcedure
End Sub
Public Sub CreateEventProcedure()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim NumLines As Long
Dim LineNum As Long
Dim ProcName As String
Dim ProcKind As VBIDE.vbext_ProcKind
Const DQUOTE = """" ' one " character
Set VBProj = ActiveWorkbook.VBProject
Set VBComp = VBProj.VBComponents("Sheet2")
Set CodeMod = VBComp.CodeModule
With CodeMod
LineNum = .CountOfDeclarationLines + 1
Do Until LineNum >= .CountOfLines Or ProcName = "Worksheet_Change"
ProcName = .ProcOfLine(LineNum, ProcKind)
LineNum = .ProcStartLine(ProcName, ProcKind) + _
.ProcCountLines(ProcName, ProcKind) + 1
Loop
If ProcName = "Worksheet_Change"
GoTo Exi
End If
'Now, create a Change Event on Sheet2
LineNum = .CreateEventProc("Change", "Worksheet")
当询问有关现有代码的问题时,最好包含代码。 –
我的理解是,虽然我不认为这不是必要的,因为这个问题与我目前的编码较少有关,更多的是关于是否可以使用加载项来硬写入新打开的工作簿。但是,如果你真的需要它,我可以展示我得到的东西。 – Jeremiah
这取决于你 - 如果你想要答案,那么代码问题在这里会更好。这是有点难以遵循你的问题,因为你似乎在使用“工作表”,也许你的意思是“工作手册” –