2015-09-11 102 views
2

我想写一段代码,将以下代码放入已创建的新Excel工作簿中。生成的代码应该是将代码添加到Workbook_Open()

Private Sub Workbook_Open() 
    ThisWorkbook.RefreshAll 
End Sub 

此刻我正在使用以下代码,并且新工作簿是活动工作簿。

Public Sub AddNewModule() 

Dim proj As VBIDE.VBProject 
Dim comp As VBIDE.VBComponent 

Set proj = ActiveWorkbook.VBProject 
Set comp = proj.VBComponents.Add(vbext_ct_StdModule) 
comp.Name = "MyNewModule" 

Set codeMod = comp.CodeModule 

With codeMod 
    lineNum = .CountOfLines + 1 
    .InsertLines lineNum, "Private Sub Workbook_Open() 
    lineNum = lineNum + 1 
    .InsertLines lineNum, "ThisWorkbook.RefreshAll" 
    lineNum = lineNum + 1 
    .InsertLines lineNum, "End Sub" 
End With 

End Sub 

有没有人知道我要去哪里错或什么可以帮助我?

+1

您是否尝试在“Private Sub Workbook_Open()的末尾添加”? (; –

+1

使用已经拥有该代码的模板要简单得多。或者设置无论您需要刷新以刷新无需代码打开的workbok。 – Rory

回答

0

这是你正在尝试(短而甜)?

Option Explicit 

Sub Sample() 
    With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.CodeName).CodeModule 
     .InsertLines Line:=.CreateEventProc("Open", "Workbook") + 1, _ 
     String:=vbCrLf & "ThisWorkbook.RefreshAll" 
    End With 
End Sub