2013-03-04 85 views
2

我有一個主工作簿,其中包含一個可打開包含需求預測的另一個工作簿的宏。通過宏打開的工作簿是從客戶門戶下載的,並且每天都是新的,而不會事先對其進行編輯。通過代碼添加模塊

宏然後遍歷信息並創建新的可讀和更直觀的工作表。但是,在這些工作表中的一部分上,我想添加一些事件驅動的代碼,以在鼠標移動或選擇單元格時提供工具提示。

是否有任何可能(沒有安裝來自vanilla Excel 2010的加載項)將代碼添加到在宏期間創建的工作表對象?

已處理工作簿的佈局或多或少是靜態的,所以我想知道是否應創建模板文件,然後將輸入複製到其中。這將允許我在添加數據之前對事件進行編碼。這是最好的可能嗎?

+2

看起來像你可以這樣做:'Application.VBE.ActiveVBProject.VBComponents.Import(「c:\ MyFolder \ MyFileName.bas」)'... – Dan 2013-03-04 08:54:49

+0

感謝您的答覆,讚賞。儘管我最終創建了一個模板文件,因爲對於我來說創建,測試和調試更簡單。 – 2013-03-04 13:04:14

回答

0

正如Dan指出的那樣,您可以使用Application.VBE.ActiveVBProject以編程方式將代碼模塊添加到工作簿。但是這樣做需要更寬鬆的宏安全設置(默認設置爲不可信),不建議使用

當我有做類似的事情,我用三個工作簿:

  1. 包含數據的工作簿
    • 這本書有沒有微距功能
  2. 包含必要的模板工作簿宏
  3. 啓用宏的工作簿以促進轉換。

使用工作簿#3打開工作簿#1並將其數據複製到工作簿#2中。保存工作簿#2的副本並關閉它。根據需要重複此過程。

這不是最漂亮的解決方案,但它保持您的代碼模塊化。

+0

這正是我最終做的。我必須編寫一些將在導入數據的工作表上執行的事件。我把它們放在一個模板啓用宏的工作簿中,並在清理數據之前將導入數據複製到此模板的副本中。 – 2013-03-08 07:44:03