2015-01-15 127 views
0

調用宏所以我有一個主Excel中有幾個宏例如代碼文件: Sub ExtractDate()Sub RemoveBlankSpaces()Sub ReMoveOlderDates()從另一個工作簿

我想要做的是每次我從服務器下載一個新的Excel電子表格時,我希望能夠將那些在主excel文件中的相同宏應用到正在從服務器下載的文件中,而無需將master excel文件中的代碼複製並粘貼到新文件中。

有沒有辦法做到這一點?

+0

解決此問題的一個好方法是將您的主Excel文件轉換爲加載項。以下是我在另一篇SO文章中寫的一篇文章:http://stackoverflow.com/questions/23135211/how-to-make-a-reusable-button-from-a-macro – 2015-01-15 16:06:07

+0

Hey Dan,謝謝答覆。如果你可以澄清,那麼我是否將你發佈在另一個鏈接上的代碼添加到我想要使用的宏的主excel文件中? – 2015-01-15 16:44:24

回答

0

對任何Excel文件執行宏(你可以因此增加一些一致性檢查規則到你的代碼)的常用方法如下:

1)添加要始終執行到ThisWorkbook_Open事件的代碼的主表。您可以從VBE訪問事件,方法是單擊模塊樹上的「This Workbook」,然後選擇打開的事件。這是想法:

Private Sub ThisWorkbook_Open() 
    ExtractDate 
    RemoveBlankSpaces 
    RemoveOlderDates 
    'etc. 
End Sub 

不要忘記添加一個最終的數據驗證,如果想(例如,如果文件名是「本」,然後執行)

2)保存工作簿爲「.xlam」 ,給它的名稱和你喜歡的位置(它只會創建一個副本,你不會覆蓋原來的主工作簿)

3)打開一個新的Excel文件,然後轉到文件/選項/加載項,因此瀏覽(我的Excel是法文,名稱可能會略有不同,但這是邏輯)

4)進入瀏覽窗口,尋找你.xlam文件並將其添加到檢查加載項

從現在開始,每次你打開一個Excel文件,該文件被稱爲在ThisWorkbook_Open事件的宏列表您的.xlam文件(從您的主工作簿生成)將被執行。

重要提示

如果您的宏還有諸如「ThisWorkbook.Range("A1")」,不要忘記用「ActiveWorbook」,以取代他們的主文件之前將其保存爲.xlam,否則就會引用在加載項上運行宏,而不是在當前打開的工作簿中運行宏。如果您不想觸摸原始文件,則始終可以將此代碼編輯到外接程序中,該外接程序可以從VBE中的任何Excel實例訪問它(如果啓動外接程序,該樹總會在那裏)。

+0

@JamesCammer,你能發表一個快照嗎?這真的很奇怪。你可能只是有一箇舊的Excel,你有「.xla」嗎? – 2015-01-16 15:18:31

+0

這是一個愚蠢的問題,我自己想清楚了。非常感謝Matteo!你是最棒的:) – 2015-01-16 15:19:59

+0

@JamesCammer沒有問題,如果你認爲未來可能會幫助別人解決同樣的問題,請不要猶豫加入混淆之源! – 2015-01-16 15:21:35

相關問題