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