我正在嘗試創建一個可供其他人使用的程序。目前,我的文件目錄C:\Documents and Settings\jpmccros\Desktop\test
在VBA中調用批處理文件無法正常工作
該目錄包含了我的macro.xlsm
,names.bat
,和另一個名爲Data
子目錄。
批處理文件names.bat
執行以下操作:
cd data
dir/b/o:n > names.txt
這不正是我想要它做的。當我打開批處理文件(該文件所在的目錄C:\Documents and Settings\jpmccros\Desktop\test\
,在MS-DOS命令提示符C:\Documents and Settings\jpmccros\Desktop\test\
開始然後運行我的命令,使我的文件names.txt
,並把它正是我想要的。
當我打開macro.xlsm
並運行宏1,它會調用批處理文件來打開
這是我的宏命令:
Dim names_txt, names_bat, full_name, filename, folder As String
Dim position As Integer
Dim pathcrnt As String
full_name = ThisWorkbook.FullName
filename = ThisWorkbook.Name
position = InStr(1, full_name, filename, 1)
position = position - 1
folder = Left(full_name, position)
names_bat = folder & "names.bat"
Shell names_bat, vbMaximizedFocus
現在,這裏是我的問題:宏實際上是打開的批處理文件,或至少它打開MS DOS命令提示符。但是,當它打開批處理文件時,最初的可怕ctory是:
C:\Documents and settings\jpmccros\My Documents
我需要這個批處理文件,宏是動態的,所以我需要的批處理文件來打開它的顯示目錄。這是怎麼回事?是否有我可以寫在批處理文件上的命令?這是VBA中的東西嗎?
所以,如果你嘗試'在你的代碼debug.print ThisWorkbook.FullName'你得到 「C:\ Documents和Settings \ jpmccros \桌面\測試\ macro.xlsm」在立即窗口,即您的代碼正在運行在正確的工作簿保存到正確的路徑? – brettdj 2012-02-25 09:26:27
我不明白這是什麼增加了以前版本的問題。我向您展示瞭如何將'C:\ Documents and Settings \ jpmccros \ Desktop \ test \ data'或任何您想要的文件夾作爲批處理文件的參數以及如何在'cd'命令中使用該參數來切換到所需的目錄。你不解釋我的解決方案爲什麼不能滿足你的需求。你試過了嗎? – 2012-02-25 09:39:38
[使用VBA在給定目錄中運行批處理文件]可能的重複(http://stackoverflow.com/questions/9403341/running-a-batch-file-in-a-given-directory-using-vba) – 2012-02-25 20:39:21