vba傳值呼叫 vba命令列傳遞引數

2021-10-13 05:44:35 字數 1593 閱讀 4277

每次通過單擊 excel 程式圖示或「開始」選單中的 excel 程式名稱啟動 excel  時,實際上就會執行 excel.exe 命令,但通常不鍵入該命令,甚至看不到該命令。再有執行vba中的shell "excel.exe    /引數  *.xls"語句,實際也是一條命令列。

通過向 excel.exe 命令新增稱為「開關」的子命令,可以更改程式啟動方式的某些方面。開關的形式為主命令後加乙個空格,再跟斜槓 (/) 和開關的名稱。開關有時還會後跟另乙個空格以及乙個或多個稱為引數的特定指令,這些指令為程式提供有關如何執行 excel.exe 命令的進一步資訊。例如,以下命令指示 excel 啟動並以唯讀方式開啟指定的檔案:

excel.exe /r "c:\my folder\book1.xlsx"

在此示例中,開關是 /r,引數是「c:\my folder\book1.xlsx」。

命令列開關也稱為命令列選項,有時在使用引數時可以不帶開關。如果只想一次性使用開關和任何關聯的引數,則可以在 microsoft windows 的「執行」對話方塊(在「開始」選單上)中鍵入命令。如果想多次使用同一開關及其關聯的引數,則可以建立乙個桌面快捷方式,以便始終使用同一開關及其引數啟動程式。

vba命令列引數有什麼作用?

依在下的理解,除了上面提及的,還可以向vba傳遞引數以決定程式的行為。大家都知道,我們可以使用open語句開啟乙個xls 文件,如果該xls文件存有vba,open語句是沒辦法向vba傳遞命令列引數滴,vba當然沒選擇的餘地去執行。這裡我要提到shell啦,傳遞的引數讓vba接收後視引數情況執行具體的**。

vba又是如何接收命令列引數滴呢?

有a.xls和b.xls,a模組中有一過程:shell"excel.exe   /123   b.xls",語句是說開啟b文件並傳遞引數123.

public declare function getcommandline lib "kernel32" alias "getcommandlinea" () as long

public declare function lstrlen lib "kernel32" alias "lstrlena" (byval lpstring as long) as long

public declare function lstrcpy lib "kernel32" alias "lstrcpya" (byval lpstring1 as string, byval lpstring2 as long) as long

function commandline() as string

dim length as long, pstr as long

pstr = getcommandline()               '獲取字串的指標

length = lstrlen(pstr)                '獲取字串的長度

commandline = string(length + 1, 0)   '調整字串的大小

lstrcpy commandline, pstr             '複製字串

end function

sub test()

sheet1.cells(1,1)= commandline

end  sub

LUA 命令列呼叫

在lua中呼叫命令列的方式主要有兩種os.execute io.popen os.execute可以執行dos命令,但是返回的是系統狀態碼,預設輸出.例如 os.execute mkdir dir 可在當前目錄建立乙個名為 dir 的資料夾io.popen 也可以執行dos命令,但是返回乙個檔案。l...

vscode命令列呼叫

對於經常使用macos terminal的使用者來說,希望直接命令呼叫vscode軟體開啟檔案或資料夾,我們只需如下操作即可 shift command p搜尋 shell 安裝好之後系統就可以使用code folder or file直接開啟檔案或資料夾了 當前已經開啟的終端,關閉重開 as4k ...

python 命令列傳參

1.簡單的寫法 通過匯入模組sys import sys if name main argc len sys.ar arg0 sys.ar 0 2.稍微複雜一點的引數可以使用getopt模組 import sys import getopt if name main opt,args getopt....