VBA研究 VBA提供的檔案操作

2021-09-29 02:31:15 字數 2050 閱讀 7352

最近乙個學習vba的同事問我如何用vba修改檔名,我給他說了一下方法,順便也整理一下常用的幾種操作方法。

這兒說的檔案操作是指作業系統級別的,不是開啟檔案,對檔案內容操作。我們當然可以建立檔案系統物件操作檔案,但是,最簡單的還是使用vba提供的標準的檔案操作功能。最常見的就是檔案或資料夾的增、刪、改。

1、建立和刪除資料夾(增、刪):

建立:mkdir path,例如:mkdir thisworkbook.path & "\temp"

刪除:rmdir path,例如:rmdir thisworkbook.path & "\temp"

2、複製檔案(增):filecopy source, destination,例如:

filecopy thisworkbook.path & "\old" , thisworkbook.path & "\new"

3、刪除檔案(刪):kill pathname,例如:

myfile = thisworkbook.path & "\song.xls"

if dir(myfile) <> "" then kill myfile

4、重新命名檔案或者資料夾(改):name oldpathname as newpathname,例如:

name thisworkbook.path & "\old" as thisworkbook.path & "\new"

5、最後說一下dir這個函式,最常用的是判斷檔案或者資料夾是否存在,例如:

if dir(thisworkbook.path & "\song.xls", vbnormal) <> "" then

其實這個函式功能很強大,可以根據需要,返回指定路徑下所有檔名,對於處理多個檔案特別有用。以前做過乙個文字替換工具,替換資料夾下所有word檔案中的相應文字,就是用這個函式返回所有檔名的。

dir[(pathname[, attributes])]

引數pathname是可選的,用來指定檔名的字串表示式,可能包含目錄或資料夾、以及驅動器。如果沒有找到pathname,則會返回零長度字串 ("")。

引數attributes是可選的,常數或數值表示式,其總和用來指定檔案屬性,如下表所示。如果省略,則會返回不包含屬性的匹配檔案。

常數

描述

vbnormal

0(預設) 指定沒有屬性的檔案。

vbreadonly

1指定無屬性的唯讀檔案。

vbhidden

2指定無屬性的隱藏檔案。

vbsystem

4指定無屬性的系統檔案,在macintosh中不可用。

vbvolume

8指定卷標檔案;如果指定了其它屬性,則忽略。vbvolume 在macintosh中不可用。

vbdirectory

16指定無屬性檔案及其路徑和資料夾。

vbalias

64指定的檔名是別名,只在macintosh上可用。

注意 在第一次呼叫dir函式時,必須指定pathname,否則會產生錯誤。下面是個例子:

sub mydir()

dim mydir as string

dim fno as integer

fno = 1

range("a:a").clearcontents

mydir = dir(thisworkbook.path & "\*.xls", vbnormal)

do while mydir <> ""

cells(fno, 1) = mydir

mydir = dir

fno = fno + 1

loop

end sub

mydir過程使用dir函式在**所在工作簿的資料夾中查詢所有的excel檔案,找到後寫入到工作表的a列單元格中。dir函式會返回匹配 pathname引數的第乙個檔名,若想得到其他匹配pathname引數的檔名,需再一次呼叫dir函式,且不要使用引數。如果已沒有合乎條件的檔案,則dir函式會返回乙個零長度字串 ("")。

VBA研究 VBA中編寫延時函式

1 一般延時 乙個應用介面需要限制執行速度,需要在迴圈中加個延時函式,這個延時不需要多麼精確,要求有個幾秒延時,網上用的比較多的就是用timer函式編寫,timer是vba自帶的函式,用起來比較方便,一般程式如下 延時程式 sub delay t as single dim time1 as sin...

VBA讀取檔案

首先我們需要認識幾個相關定義 filesystemobject 檔案系統定義 set fs createobject scripting.filesystemobject set a fs.createtextfile c testfile.txt true a.writeline this is ...

VBA 選擇檔案

option explicit sub 開啟檔案 dim filenameobj as variant dim afile as variant 陣列,提取檔名filename時使用 開啟檔案對話方塊返回的檔名,是乙個全路徑檔名,其值也可能是false,因此型別為variant dim filena...