簡體   English   中英

Excel 2007 Workbook_open無法正常工作

[英]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 ... NextFor 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM