File Object-Completed

tuhocvba

Administrator
Thành viên BQT
Thuộc tính
  • : Thiết định thuộc tính của file
  • : Giá trị trả về là ngày mà file đã được tạo ra
  • : Giá trị trả về là ngày cuối cùng mà file được truy cập
  • : Giá trị rả về là ngày cuối cùng mà file được cập nhật.
  • : Giá trị trả về là tên ổ đĩa chứa file
  • : Giá trị trả về là tên file
  • : Giá trị trả về là folder chứa file
  • : Giá trị trả về là đường dẫn file.
  • : Giá trị trả về là tên của file theo định dạng 8.3
  • : Giá trị trả về là đường dẫn của file theo định dạng 8.3
  • : Giá trị trả về là kích thước của file
  • : Giá trị trả về là kiểu (chủng loại) của file

Phương thức
  • : Copy file
  • : Xóa file
  • : Di chuyển file tới nơi lưu trữ khác
  • : Mở file text
Sau đây, ta sẽ lần lượt đi từng mục nhé.
Nguồn tham khảo và dịch:
 

tuhocvba

Administrator
Thành viên BQT
Attributes: Thiết định thuộc tính của file , hoặc lấy thông tin thuộc tính của file.
Giá trịThuộc tính
0​
File tiêu chuẩn thông thường
1​
File chế độ chỉ đọc, không chỉnh sửa
2​
File ẩn
4​
File hệ thống
8​
Disk drive volume label (Chỉ đọc, không chỉnh sửa)
16​
Folder hoặc đường dẫn (Chỉ đọc, không chỉnh sửa)
32​
File lưu trữ (archive file)
64​
Link hoặc shortcut (chỉ đọc, không chỉnh sửa)
128​
File nén (chỉ đọc, không chỉnh sửa)

Khi thiết định thuộc tính chú ý:
Ta muốn thiết định thuộc tính của file là : file ẩn (2) + chỉ đọc, không cho chỉnh sửa (1) = 2+1 = 3. Như vậy thuộc tính cần thiết định cho file sẽ là 3.
Mã:
Sub test56()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Hủy bỏ chế độ file chỉ đọc C:\Work\Book1.xls
    ''Từ nay file có thể chỉnh sửa được
    If FSO.GetFile("C:\Work\Book1.xls").Attributes And 1 Then
        FSO.GetFile("C:\Work\Book1.xls").Attributes = 0
    End If
    Set FSO = Nothing
End Sub
Nguồn:
 

Euler

Administrator
Thành viên BQT
Thuộc tính DateCreated: Giá trị trả về là ngày và giờ đã khởi tạo file (String).

Ví dụ:
Mã:
Sub test1016()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Se hien thi ngay gio ma file nay duoc tao ra  C:\Work\Book1.xlsx
    MsgBox FSO.GetFile("C:\VBA\thvba1226.xlsx").DateCreated
    Set FSO = Nothing
End Sub
Bạn sẽ ngạc nhiên, cái này để ứng dụng làm gì? Nó ứng dụng để quản lý file.

Bây giờ ta có một câu chuyện như sau:

Công ty A có vốn đầu tư của Hàn Quốc, hàng năm tổ chức kỳ thi năng lực tiếng Hàn Quốc cho nhân viên người Việt Nam. Tuy nhiên, số lượng người có thể tham dự kỳ thi là hữu hạn. Vì vậy họ sẽ gửi macro cho nhân viên điền nguyện vọng. Nhân viên điền nguyện vọng xong thì ấn nút, macro sẽ tạo ra file nguyện vọng ứng với mã nhân viên, cất vào một folder trên sever.

Ban tổ chức kỳ thi sẽ sử dụng một macro khác để tổng hợp nguyện vọng, ưu tiên ai gửi yêu cầu sớm thì sẽ được xếp ưu tiên tham gia kỳ thi. Như vậy cần phải xác định file nguyện vọng ấy được tạo ra vào thời điểm nào. Và người tạo macro sẽ sử dụng thuộc tính này của FSO để xây dựng macro.
 

giaiphapvba

Administrator
Thành viên BQT
Thuộc tính DateLastAccessed : Giá trị trả về là ngày cuối cùng mà file được truy cập.
Giá trị trả về là string.
Mã:
Sub test58()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Work\Book1.xlsx được truy cập(mở) lần cuối là khi nào
    MsgBox FSO.GetFile("C:\Work\Book1.xlsx").DateLastAccessed
    Set FSO = Nothing
End Sub
DateLastModified : Giá trị rả về là ngày cuối cùng mà file được cập nhật.
Giá trị trả về là string.
Mã:
Sub test59()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''C:\Work\Book1.xls được chỉnh sửa cập nhật lần cuối là khi nào
    MsgBox FSO.GetFile("C:\Work\Book1.xlsx").DateLastModified
    Set FSO = Nothing
End Sub
 

tuhocvba

Administrator
Thành viên BQT
Thuộc tính Drive : Giá trị trả về là tên ổ đĩa chứa file.
Cấu trúc: File.Drive
Mã:
Sub test60()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Giá trị trả về là ổ đĩa「C:」
    MsgBox FSO.GetFile("C:\Work\Book1.xlsx").Drive
    Set FSO = Nothing
End Sub
Thuộc tính Name : Giá trị trả về tên file. Bạn cũng có thể dùng thuộc tính này để thiết định tên cho file. Nhưng nếu đã tồn tại file có tên giống như tên bạn muốn thay thế thì sẽ phát sinh lỗi.
Cấu trúc: File.Name
Mã:
Sub test61()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Thay đổi tên file C:\Work\Book1.xls thành Sample.xls
    FSO.GetFile("C:\Work\Book1.xlsx").Name = "Sample.xls"
    Set FSO = Nothing
End Sub
 

tuhocvba

Administrator
Thành viên BQT
Thuộc tính ParentFolder : Trả về đường dẫn của thư mục chứa file đó.
Cấu trúc: File.ParentFolder
Mã:
Sub test62()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Trả về giá trị là đường dẫn「C:\Work」
    MsgBox FSO.GetFile("C:\Work\Book1.xlsx").ParentFolder
    Set FSO = Nothing
End Sub
Nguồn:
 

giaiphapvba

Administrator
Thành viên BQT
Thuộc tính Path: Trả về đường dẫn của file.
Cấu trúc: File.Path
Mã:
Sub test63()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Kết quả trả về là「C:\Work\Book1.xlsx」
    MsgBox FSO.GetFile("C:\Work\Book1.xlsx").Path
    Set FSO = Nothing
End Sub
Nguồn:
 

vbano1

SMod
Thành viên BQT
Thuộc tính ShortName: Trả về tên file dưới định dạng 8.3
Nhắc lại về định dạng tên file 8.3:
Đây là định dạng tên file được dùng cho MS-DOS, Windows 3.x, Windows95 được gọi là short filename (SFN). Phần mở rộng của file (đuôi file) sử dụng tối đa 3bytes, tên file sử dụng tối đa là 8 bytes.
Nguồn: .
Mã:
Sub test64()
    Dim FSO As Object, Target As String
    Target = "C:\VBA\bandichmoi_0528.xlsx"
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Hiển thị là:「BANDIC~1.XLS」
    MsgBox FSO.GetFile(Target).ShortName
    Set FSO = Nothing
End Sub
Ứng dụng: Nếu bạn sử dụng ListBox để hiển thị tên file, trường hợp tên file quá dài thì tên hiển thị sẽ bị khuất nhìn rất xấu. Trong trường hợp này, bạn có thể sử dụng shortname để cho hiển thị.
Nguồn:

Thuộc tính ShortPath: Trả về đường dẫn dưới định dạng 8.3
Mục đích cũng là làm cho đường link ngắn lại để hiển thị cho đẹp.
Mã:
Sub test65()
    Dim FSO As Object, Target As String
    Target = "C:\Program Files\Windows Media Player\Skins\Windows Classic.wmz"
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Hiển thị là:「C:\PROGRA~1\WINDOW~2\Skins\WINDOW~1.WMZ」
    MsgBox FSO.GetFile(Target).ShortPath
    Set FSO = Nothing
End Sub
Nguồn:

Thuộc tính Size: Trả về kích cỡ của file.
Mã:
Sub test66()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Sẽ hiển thị kích thước của file C:\Work\Book1.xlsx
    MsgBox FSO.GetFile("C:\Work\Book1.xlsx").Size
    Set FSO = Nothing
End Sub
Nguồn:

Thuộc tính Type: Trả về kiểu file.
Mã:
Sub test67()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Se hien thi la:「Microsoft Excel Worksheet」
    MsgBox FSO.GetFile("C:\VBA\bandichmoi_0528.xlsx").Type
    Set FSO = Nothing
End Sub
Nguồn:
 

Euler

Administrator
Thành viên BQT
Phương thức Copy
Cấu trúc: File.Copy destination[, overwrite]
Tham số destination sẽ chỉ định đường dẫn của file cần copy.
Tham số overwrite có thể giản lược. Nếu chỉ định là True thì sẽ ghi đè lên file đã tồn tại trước đó. Nếu chỉ định là False thì sẽ không thực thi ghi đè, có thể xảy ra lỗi nếu đã tồn tại file trùng tên trước đó. Nếu giản lược thì máy tính sẽ mặc định hiểu là True.
Phương thức Copy của File Object hoạt động tự phương thức .
Mã:
Sub test68()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Copy file C:\Work\Book1.xlsx cất vào thư mục C:\Tmp
    FSO.GetFile("C:\Work\Book1.xlsx").Copy "C:\Tmp\"
    ''Copy file C:\Work\Book1.xlsx cho vào thư mục
    '' và đổi tên file là Report.xlsx
    FSO.GetFile("C:\Work\Book1.xlsx").Copy "C:\Tmp\Report.xlsx"
    Set FSO = Nothing
End Sub
Nguồn:
 

vbano1

SMod
Thành viên BQT
Phương thức Delete.
Cấu trúc: File.Delete

File được chỉ định sẽ bị xóa.
Nếu file cần xóa không thực sự tồn tại sẽ xảy ra lỗi. Để kiểm tra file tồn tại hay không, các bạn có thể sử dụng phương thức của FileSystemObject.
Phương thức Delete của File Object hoạt động tương tự như của FileSystemObject.
Mã:
Sub test69()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Xóa file C:\Tmp\Report.xlsx
    FSO.GetFile("C:\Tmp\Report.xlsx").Delete
    Set FSO = Nothing
End Sub
 

tuhocvba

Administrator
Thành viên BQT
Phương thức Move.
Cấu trúc: File.Move

File được chỉ định sẽ bị move. Phương thức này giống với .
Mã:
Sub test70()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Di chuyển C:\Work\Book1.xlsx tới thư mục C:\Tmp
    FSO.GetFile("C:\Work\Book1.xlsx").Move "C:\Tmp\"
    Set FSO = Nothing
End Sub
Nguồn:
 

vbano1

SMod
Thành viên BQT
Phương thức OpenAsTextStream.
Cấu trúc: File.OpenAsTextStream([iomode, [format]])


Nó sẽ mở file text và trả về giá trị là Object TextStream.
Tham số filename : Là địa chỉ file mà bạn chỉ định để mở.
Phương thức này để mở một file đã tồn tại, chứ không phải để tạo ra file mới, nên xin hãy chú ý. Nếu không có tham số chỉ định file sẽ mở filename, hoặc file này không tồn tại, thì sẽ sinh ra lỗi. Để xác nhận file tồn tại hay không, hãy dùng phương thức của FileSystemObject.

Tham số iomode có thể giản lược. Đây là giá trị để chỉ định mở chỉ đọc, hay là mở rồi cho phép ghi đè nội dung. Nếu giản lược, nó sẽ nhìn nhận mặc định đây là giá trị 1, tức là chỉ cho phép đọc mà không được ghi đè.
Giá trịMode
1​
Chỉ đọc, không ghi đè
2​
Đọc và cho ghi đè
8​
Đọc và ghi thêm nội dung vào file

Tham số format có thể giản lược. Đây là tham số chri định mở file dưới hình thức nào. Nếu giản lược, chương trình mặc định mở file dưới chế độ ASCII.
Giá trịFormat
0​
Mở file với chế độ ASCII
-1​
Mở file với chế độ Unicode
-2​
Mở file với chế độ mặc định của hệ thống (chưa rõ-lời người dịch)
Phương thức này giống với của FileSystemObject.

Mã:
Sub test71()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ''Mở file và ghi ngày tháng vào dòng cuối cùng C:\Work\Sample.txt
    With FSO.GetFile("C:\Work\Sample.txt").OpenAsTextStream(8)
        .WriteLine Now
    End With
    Set FSO = Nothing
End Sub
Nguồn:
 
Top