vba中dir函數(shù)用法 為什么我在VBA中寫的DIR函數(shù)遍歷出來的文件不是我想要的?
為什么我在VBA中寫的DIR函數(shù)遍歷出來的文件不是我想要的?我的解決方案不是使用dir函數(shù),而是使用FSO對象遍歷文件夾中的所有文件,獲取每個文件的文件名,然后使用正確的函數(shù)判斷文件擴展名是否為XLS
為什么我在VBA中寫的DIR函數(shù)遍歷出來的文件不是我想要的?
我的解決方案不是使用dir函數(shù),而是使用FSO對象遍歷文件夾中的所有文件,獲取每個文件的文件名,然后使用正確的函數(shù)判斷文件擴展名是否為XLS
我們知道dir()函數(shù)是用來查看對象的屬性的,函數(shù)也是一個對象?,F(xiàn)在假設(shè)有以下函數(shù)
如果我們使用dir(Hello),我們將得到Hello函數(shù)(object)的所有屬性。如果我們使用dir(Hello()),其實它的運行過程是先執(zhí)行Hello(),然后執(zhí)行dir(返回值),這里是dir(“Hello world”),就是得到‘Hello world’的string對象的所有屬性
!這就是區(qū)別。
VBA中dirname=Dir是什么意思?
. 還有。。是當(dāng)前目錄和上級目錄,在代碼修改下:
dim sPath as string,patha as string
dim sfilename as string
dim row as long
sPath=cells(2,1)。價值和應(yīng)用程序路徑分隔符
sfilename=Dir(spath&“*”,vbDirectory)
rown=4
在sfilename“”時執(zhí)行
如果sfilename“”和sfilename“.”則
單元格(第1行)。Value=sfilename
結(jié)束if
sfilename=dir
row=row 1
循環(huán)
dir函數(shù)的參數(shù)錯誤。
應(yīng)該是:
如果目錄(此工作簿。路徑&注意逗號。應(yīng)該是西文的,你的是中文的。
編寫代碼以注意全角度和半角度之間的差異。
EXCEL VBA Dir函數(shù)?
通常,len(dir)(“C:001。Xls”)用于確定文件是否存在。如果返回值大于0,則返回文件001。XLS存在,否則它不存在
因為當(dāng)你遍歷一個子文件夾時,你用參數(shù)調(diào)用dir(folder,vbdirectory)。在子文件夾遍歷包之后,再次調(diào)用dir。默認路徑仍然是子文件夾,因此您犯了一個錯誤。建議使用以下方法:sub test002(folderspec)dim FS,F(xiàn),F(xiàn)1,SF,F(xiàn)C dim mypath as string,F(xiàn)N as string dim I as long,lmyrow as long on error resume next set FS=CreateObject()腳本.FileSystemObject)設(shè)置f=fs.GetFolder文件夾(folderspec)為sf fn中的每個f1設(shè)置sf=f.子文件夾為fc=f.文件=f1.Name mypath=folderspec& fn&“”ShowFolderList mypath Next For Each f1 In fc fn=f1.Name NextEnd Sub