2017-02-13 61 views
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") 
+0

当询问有关现有代码的问题时,最好包含代码。 –

+0

我的理解是,虽然我不认为这不是必要的,因为这个问题与我目前的编码较少有关,更多的是关于是否可以使用加载项来硬写入新打开的工作簿。但是,如果你真的需要它,我可以展示我得到的东西。 – Jeremiah

+0

这取决于你 - 如果你想要答案,那么代码问题在这里会更好。这是有点难以遵循你的问题,因为你似乎在使用“工作表”,也许你的意思是“工作手册” –

回答

0

对于那些谁照顾,我得到了过程与未成年人的并发症工作。下面是我所做的:

Option Explicit 
Private WithEvents ExApp As Excel.Application 

Public Sub ExApp_WorkbookOpen(ByVal Wb As Workbook) 
Dim StrPrompt As String 
Dim strTitle As String 
Dim iRet As Integer 
StrPrompt = "Want to create event?" 
strTitle = "Event?" 
On Error GoTo 0 
iRet = MsgBox(StrPrompt, vbYesNo, strTitle) 
If iRet = vbYes Then 
    ActiveWorkbook.Sheets.Add 
    Call CreateEventProcedure 
End If 
    On Error GoTo 0 
     ActiveWorkbook.Sheets.Add 
     Call CreateEventProcedure 
    End If 

End Sub 

Private Sub Workbook_Open() 
    Set ExApp = Excel.Application 
End Sub 

我创建的是/否提示绕过第一个“运行时_Global”错误,然后Excel工作簿实际负载,提示再次问我,然后我点击Yes,一切正常精细。此外,这仅适用于在Excel中打开工作簿时所需的一个提示。

相关问题