我在我的宏中有一些標準化進程,將更改應用到放置在任何目錄中的一組文件,並且我不知道爲什麼我會得到不同的結果。爲了說明這一點,這是標準的代碼的開頭:更改工作驅動器
'list files in the folder where this macro is placed
strNombreCarpeta = ThisWorkbook.Path
ChDir strNombreCarpeta
strArchivoExcel = Dir("*." & CStr(strExtension))
'rest of the code
即使我的工作目錄是在另一個驅動器(不是「C:」),我可以得到的「strNombreCarpeta」變量,內容爲「E :/ updates/12_06_files /'並處理該文件夾中的文件。
但是,在另一臺PC上使用同一個宏文件時,該進程根本無法工作,變量'strNombreCarpeta'獲取空值,並且「Dir」命令的工作原理與我的默認路徑爲%CURRENT_USER %/ DOCUMENTS並嘗試列出該文件夾中的文件。
所以,我沒有得到在我想要的文件進行任何更改。
一些想法,爲什麼硬盤的這一變化僅適用有時候? 我該如何預防?
在始終工作「C:」不是一個標準的解決方案,因爲在驅動器中的空間是有限的。
如果您始終將完整路徑傳遞給Dir() –
'ThisWorkbook.Path'無法返回NULL值,則不需要ChDir或ChDrv。如果工作簿直到現在才保存,它將返回一個空的String'「」'。如果工作簿是從模板('* .xltm')創建的,則會發生這種情況。如果雙擊此模板,將打開一個新的未保存的工作簿。或者有人使用'* .xlsm'作爲模板,方法是右鍵單擊並選擇New而不是Open。那麼該工作簿如何打開? –