2014-05-14 70 views
0

如果事情最終變得通用,請事先道歉。我已經對此做了一些研究並繪製了一個完整的空白。Excel打開文檔歷史記錄日誌 - AddIn

Excel很棒,我喜歡Excel。如此多的「最近文檔」部分對我來說幾乎沒有用處,因爲我在瘋狂的位置使用了許多電子表格。

我一直在研究一種打開方式(使用VBA作爲AddIn)文件。即使它變得像日期文本文件一樣簡單,但是我不知道如何讓VBA代碼「知道」什麼時候打開一個文件(它與輸出到文本文件一起是我想要的它在這個階段做)。

有沒有辦法讓VBA從excel實例中尋找這個動作?

+1

我想你會在http://stackoverflow.com/q/8419728/1967396看到你的答案,特別是鏈接到http://www.cpearson.com/excel/AppEvent.aspx哪個介紹如何做到這一點。 – Floris

+0

是所有這些工作表宏啓用?如果他們不是,那麼你打算如何運行一個事件 –

+0

@我知道,如果你有一個運行應用程序事件的加載項,並且它監視所有「工作簿打開」事件並記錄它們,那麼單個工作表不需要啓用。 – Floris

回答

2

以下步驟(改編自優秀的文章http://www.cpearson.com/excel/AppEvent.aspx)是「最低限度可行」的方式來做你所需要的。

  1. 打開一個新的工作簿
  2. 打開VB編輯
  3. 插入一個類模塊;在屬性窗口中設置類名CExcelEvents
  4. 添加以下代碼類模塊中:
 
    Private WithEvents App As Application 

    Private Sub Class_Initialize() 
     Set App = Application 
     MsgBox "initialized the class!" 
    End Sub 

    Private Sub App_WorkbookOpen(ByVal Wb As Workbook) 
     MsgBox "New Workbook was opened: " & Wb.Name 
    End Sub 

  5.  右鍵單擊Project Explorer中的「的ThisWorkbook」元素,並選擇 「查看代碼」
  6.  添加以下代碼:

Private XLApp As CExcelEvents 

Private Sub Workbook_Open() 
    Set XLApp = New CExcelEvents 
End Sub 

這將創建一個實例的CExcelEvents類,並在加載addIn時「打開事件處理」。

最後,將文件保存爲myEvents.xlam在加載項的存儲位置 - 這取決於你的機器上...

如果現在關閉的文件,並添加插件(再次,取決於您的環境無論是來自開發人員功能區還是工具菜單),您應該看到一個對話框,顯示「初始化課程!」。這顯示addIn已正確安裝並正在工作。

現在,當您打開一個工作簿時,將會出現另一個消息框:名稱爲「New Workbook was opened:」。

顯然,你會想擺脫的消息框,並把該做任何你想做的事情(例如,登錄簿的名稱到一個文件)的一些「有用」的代碼。這聽起來像你不需要後者的幫助 - 如果我錯了,請讓我知道。

+0

這幾乎是我正在尋找的,謝謝!檢查芯片皮爾遜的網站,但一定錯過了它(該網站真的是VBA的天賜之物!) – bmgh1985

+1

是的 - 芯片的網站是一個很好的資源,但可以是「豐富」。我之前鏈接的答案讓你找到了正確的地方,但即使如此,將這些東西完全轉換成你想要的也是非常棘手的。我認爲「最小的一段代碼」可能超出了你今天需要的範圍,所以我決定編寫它。我可能有一天會自己使用它...很高興它對你有用。 – Floris

+1

對此答案+1。我想很多未來的讀者可能會覺得這很有用 –