大家好,我們今日繼續(xù)講解VBA代碼解決方案的第137講內容:VBA代開任意程序的方法。 我們在寫代碼的時候,有時候會必須打開另外一個文件,今日的內容就是解決這個問題,在VBA代碼中如何可以打開其他的程序呢?我講解兩種方法。 一Shell函數(shù)。該函數(shù)讓你可以從VBA過程里直接打開任意程序。 Shell函數(shù)是什么呢?它既不是工作表函數(shù),也不是api函數(shù),它是vba自帶的函數(shù)。但是它卻神通廣大,能抵n個api函數(shù),api是應用程序接口,shell就是應用程序和系統(tǒng)之間的橋梁。它的用法很簡單,就是執(zhí)行一個可執(zhí)行文件。與開始菜單的運行功能一樣。 語法:Shell(pathname[,windowstyle]) pathname 是要執(zhí)行的程序名,可能還包括目錄或文件夾 Windowstyle 表示在程序運行時窗口的樣式,如下: 窗口形式常數(shù) 值 窗口顯示情況 vbHide 0 窗口被隱藏 vbNormalFocus 1 普通大小,并帶焦點 vbMinimizedFocus(默認設 2 最小化,并帶焦點(這是缺省設置) 置) vbMaximizedFocus 3 最大化,并帶焦點 vbNormalNoFocus 4 普通大小,并失去焦點 vbMinimizedNoFocus 6 最小化,并失去焦點 例一:假設你的過程必須打開視窗記事本, Shell 'notepad.exe', vbMaximizedFocus 在上面的語句里,'notepad.exe'是你要打開的程序的名稱。如果你擔心程序找不到的話,那么該名稱就應該包含完整的路徑(啟動器名稱和文件夾名稱)。注意,程序名稱用雙引號括起來了。Shell函數(shù)的第二個參數(shù)可以忽略。該參數(shù)明確窗口形式(也就是當程序啟動的時候,它如何顯示在屏幕上的)。在上面的例子里,記事本將顯示為最大化的窗口。 例二:你如果使用Shell函數(shù)來啟動控制面板呢?Shell 'Control.exe', vbNormalFocus 代碼: Sub MYNOTE() Shell 'notepad.exe', vbMaximizedFocus End Sub Sub MYControl() Shell 'Control.exe', vbNormalFocus End Sub 代碼截圖: 運行例1和例2 的截圖: 注意點1:如果Shell函數(shù)能夠啟動某個可執(zhí)行文件,那么它就會返回一個叫做任務ID的號碼。該號碼是指示應用程序啟動的唯一號碼。如果Shell函數(shù)不成功的話(也就是說某應用程序不能打開),VB就會產(chǎn)生一錯誤。如果你要使用Shell函數(shù)啟動的應用程序的話,就不要在Shell函數(shù)后面輸入任何語句。 注意點2: VBA在啟動程序后,立即就回到過程里面去繼續(xù)剩余的指令(因此,你沒有機會立即使用該應用程序)。 二:ActivateMicrosoftApp 方法。 那么除了使用Shell函數(shù)外,你還可以很方便地使用方法ActivateMicrosoftApp來實現(xiàn)。該方法在微軟Excel應用程序的對象里是可用的,可以激活一個?Microsoft?應用程序。如果該應用程序已經(jīng)處于運行狀態(tài),則本方法激活一個?Microsoft?應用程序。如果該應用程序已經(jīng)處于運行狀態(tài),則本方法將啟動應用程序。 語法:?expression.ActivateMicrosoftApp(index) expression 必需。該表達式返回一個?Application對象 index 必需XlMSApplication。指定要激活的?Microsoft?應用程序 使用下列常量,常量的名稱指名應用程序名稱。 Access xlMicrosoftAccess FoxPro xlMicrosoftFoxPro Mail xlMicrosoftMail PowerPoint xlMicrosoftPowerPoint Project xlMicrosoftProject Schedule xlMicrosoftSchedulePlus Word xlMicrosoftWord 例如,要從立即窗口啟動PowerPoint的話,你所有要做的事情就是輸入下面的指令并且按下Enter: Application.ActivateMicrosoftApp xlMicrosoftPowerPoint 注意ActivateMicrosoftApp方法要求一個常量來指定要啟動的程序。如果PowerPoint沒有打開的話,上面的過程就會打開PowerPoint,但是如果該程序已經(jīng)打開的話,該指令不會再打開一個新的PowerPoint界面,只是簡單的激活已經(jīng)在運行的應用程序。 代碼: Sub MYPowerPoint() Application.ActivateMicrosoftApp xlMicrosoftPowerPoint End Sub 截圖: 運行: 其實在VBA代碼中還有些其他的可以打開程序的方法,就不一一列舉了。請大家在實踐中摸索掌握, 今日內容回向: 1 如何用VBA打開一個程序? 2 本講講的兩種方法有什么不同? |
|
來自: 東西二王 > 《編程開發(fā)》