[英]excel 2007 Workbook_open not working
我試圖在Excel打開時清除“打印區域和自動過濾器”:Excel vba中的新手,因此將以下代碼從谷歌搜索中搜集了此代碼。我已將此代碼放入XLstart文件夾中的Personal.xlsb的ThisWorkbook中,並且將宏安全性設置為啟用所有宏
Option Explicit
Public WithEvents xlApp As Excel.Application
Private Sub Workbook_Open()
Set xlApp = Application
End Sub
Private Sub Workbook_Close()
Set xlApp = Nothing
End Sub
Private Sub xlApp_WorkbookOpen(ByVal Wb As Workbook)
Application.EnableEvents = False
Call ClrPrntArea
Application.EnableEvents = True
End Sub
這是ClrPrntArea
Sub ClrPrntArea()
Dim ws As Object
For i = 1 To ActiveWorkbook.Worksheets.count
With Worksheets(i)
.PageSetup.PrintArea = ""
.PageSetup.FitToPagesWide = 1
End With
Next
End Sub
我還將在個人xlsb中對模塊進行另一個宏調用,以在上述方法開始工作后重置自動裝配器。任何輸入都將非常有幫助
在PERSONAL.xlsb
模塊ThisWorkbook
,嘗試以下操作; 它幾乎與您的請求中的代碼相同,但有一些修改:
WB
對象變量作為參數,而不是ActiveWorkbook
對象 For Each ... Next
代替For ... Next
, For Each ... Next
使用局部對象變量 PERSONAL.xlsb
本身 一旦您滿意,請刪除所有MsgBox語句(以及Else
),它們只是用來顯示發生了什么情況以及何時發生。
Private WithEvents Excel_App As Excel.Application
' runs when Excel_App encounters a Workbook_Open() event
Private Sub Excel_App_WorkbookOpen(ByVal WB As Workbook)
Dim WS As Worksheet
If WB.Name <> "PERSONAL.xlsb" Then
MsgBox "PERSONAL.xlsb: Excel_App_WorkbookOpen(): " & WB.Name
For Each WS In WB.Worksheets
WS.PageSetup.PrintArea = ""
WS.PageSetup.FitToPagesWide = 1
If WS.FilterMode Then
WS.ShowAllData
End If
Next
Else
MsgBox "PERSONAL.xlsb: Excel_App_WorkbookOpen(): myself"
End If
End Sub
' runs when PERSONAL.xlsb is opened
' assign current Excel application to object variable Excel_App
Private Sub Workbook_Open()
MsgBox "PERSONAL.xlsb: Workbook_Open()"
Set Excel_App = Application
End Sub
注意事項 :
當您雙擊 Excel文件(例如,在桌面上)時事件處理程序沒有啟動時,請關閉所有Excel應用程序,並檢查任務管理器中是否有其他需要終止的孤立Excel進程。 我在玩這段代碼時發生了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.