2016-10-26 43 views
0

我想在Excel文件上運行VBA(清理功能)但是,我只希望某些用戶可以使用它。爲所有Excel運行VBA但不通過項目

示例將發送給用戶一個.bat文件並告訴他們保存並雙擊它。

  1. 這將打開VBA宏
  2. 宏會要求用戶選擇「文件」中所有打開的文件來運行宏這將在網絡位置,如果用戶選擇一個有效的被安置
  3. 宏檢查Excel文件,然後運行

但是,我該怎麼做呢?我已經做了一些研究並閱讀了我需要創建VBS文件。

有人可以請給我一個正確的道路開始?我應該寫.batch來調用VBS來存放代碼嗎?

謝謝!

+0

您既可以使用VBScript,也可以將其作爲VBA編寫並向用戶發送包含您編寫的宏的.xlsm文件。 – YowE3K

回答

0

我寫了一個非常簡短的模塊來完成這種事情 - 主要是將模塊導出/導入爲.bas文件。

您需要啓用「Microsoft Visual Basic的應用程序擴展」引用(我的是5.3 - 我不知道是否有不同的版本),但一旦你這樣做它應該工作

Public Sub CopyModule(Workbook1 As Workbook, ModuleName As String, Workbook2 As Workbook) 
''copies a named module between two workbooks VBA projects 
''also acts as a backup as it saves a copy of the module as at today's date 

'set name of exported module file 
wbname = Workbook1.name & "." & ModuleName & "." & Format(Now, "YYYYMMDD") 
Dim filename As String: filename = "H:\ASC\Reporting Files\CMT\" & wbname & ".bas" 

'define module to be copied from book 1 based on input arguments 
Dim CopyModule As VBComponent 
Set CopyModule = Workbook1.VBProject.VBComponents(ModuleName) 

'export module 
CopyModule.Export (filename) 

'import module into book 2 
Workbook2.VBProject.VBComponents.Import (filename) 

End Sub 

這裏的想法是在已經打開的兩個工作簿之間複製模塊,並同時將模塊備份。但是,您可以將出口/進口生產線視爲單獨的常規,並在不同的時間運行它們。希望這可以幫助!

+0

我刪除了這個答案並將其刪除 - 我不確定這是否是您尋找的所有解決方案 - 如果不讓我知道,我會重新刪除 – danl