Một số các thủ tục thông dụng về File, Workbook, Worksheet

Liên hệ QC

handung107

Thành viên gắn bó
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,630
Được thích
17,436
Nghề nghiệp
Bác sĩ
Chọn các tập tin​

Thủ tục dưới đây cho thấy làm cách nào để cho ngừơi dùng chọn một tập tin nào đó:
PHP:
Sub OpenOneFile() 
 Dim fn As Variant 
 fn = Application.GetOpenFilename("Excel-files,*.xls", 1, "Chon mot tap tin de mo", , False) 
 If TypeName(fn) = "Boolean" Then Exit Sub ' nguoi dung khong chon tap tin nao ca'
 Debug.Print "Selected file: " & fn 
 Workbooks.Open fn 
End Sub

Thủ tục dưới đây cho thấy làm cách nào để cho người dùng chọn nhiều tập tin:
PHP:
Sub OpenMultipleFiles() 
 Dim fn As Variant, f As Integer 
fn = Application.GetOpenFilename("Excel-files,*.xls", 1, "Chon mot hay nhieu tap tin de mo", , True) 
 If TypeName(fn) = "Boolean" Then Exit Sub 
 For f = 1 To UBound(fn) 
      Debug.Print "Selected file #" & f & ": " & fn(f) 
      Workbooks.Open fn(f) 
      MsgBox ActiveWorkbook.Name, , "Ten Workbook hien hanh la:" 
      ActiveWorkbook.Close False ' Dong workbook hien hanh ma khong luu
 Next f 
End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Chọn thư mục và tên tập tin để lưu lại:

Thủ tục dưới đây cho thấy làm cách nào để cho ngừơi dùng chọn thư mục và tên tập tin để lưu lại:

Lưu tập tin :​

PHP:
Sub SaveOneFile() 
 Dim fn As Variant 
 fn = Application.GetSaveAsFilename("Tentaptin.xls", "Excel files,*.xls", 1, _
         "Ban hay chon thu muc va ten tap tin") 
 If TypeName(fn) = "Boolean" Then Exit Sub 
 ActiveWorkbook.SaveAs fn 
End Sub

Chọn thư mục​

Với sự trợ giúp của một cặp hàm API, bạn có thể thể hiện hộp thoại để ngừơi dùng chọn thư mục:

Mã:
Private Type BROWSEINFO[COLOR="Blue"] ' Duoc su dung boi ham GetFolderName[/COLOR]
 hOwner As Long 
 pidlRoot As Long :                     pszDisplayName As String 
 lpszTitle As String :                   ulFlags As Long 
 lpfn As Long :                          lParam As Long 
 iImage As Long           
End Type

Mã:
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long 
Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

PHP:
Function GetFolderName(Msg As String) As String 
' Tra ve ten cua thu muc ma nguoi dung chon'
 Dim bInfo As BROWSEINFO, path As String, r As Long, X As Long, pos As Integer 

 bInfo.pidlRoot = 0& ' Root folder = Desktop
 If IsMissing(Msg) Then 
      bInfo.lpszTitle = "Chon mot thu muc." ' Title cua hop thoai
 Else 
      bInfo.lpszTitle = Msg ' Title cua hop thoai
 End If 

 bInfo.ulFlags = &H1 ' Kieu cua thu muc tra ve (Type of directory to return)'
 X = SHBrowseForFolder(bInfo) ' The hien hop thoai
' Phan tich ket qua (Parse the result)'
 path = Space$(512) 
 r = SHGetPathFromIDList(ByVal X, ByVal path) 
 If r Then 
     pos = InStr(path, Chr$(0)) 
     GetFolderName = Left(path, pos - 1) 
 Else 
     GetFolderName = "" 
 End If 
End Function
Ví dụ kiểm tra hàm trên.​

Mã:
[B]Sub TestGetFolderName() [/B]
Dim FolderName As String 
FolderName = GetFolderName("Select a folder") 
If FolderName = "" Then 
MsgBox "Ban da khong chon thu muc nao ca." 
Else 
MsgBox "Ban da chon thu muc: " & FolderName 
End If 
[B]End Sub[/B]
Hy vọng rằng với các hàm trên sẽ giúp ích cho các bạn một phần nào trong việc lập trình VBA cho Excel. Nếu các bạn muốn tìm hiểu kỹ các bạn có thể tham khảo bài viết của Nguyễn Lan Anh trên Website Lê Hoàn.

Lược dịch và sưu tầm. Mọi góp ý xin gởi về: levanduyet@yahoo.com
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Các ví dụ cơ bản về các thao tác với các tập tin và thư mục trong VBA cho Excel

1/ Làm thế nào để lấy được ổ đĩa và tên của thư mục hiện tại:

MsgBox "O dia va ten thu muc hien tai la " & CurDir
Làm thế nào để thay đổi ổ đĩa hiện tại:

ChDrive "F"

2/ Làm thế nào để thay đổi thư mục hiện hành:

ChDir "F : \ My Documents \ Private"

3/ Làm thế nào để xác định một File tồn tại trong một thư mục:

If Dir("F : \ My Documents \ My Workbook.xls") <> "" Then
' Chuỗi rỗng sẽ được trả về nếu File không tồn tại

4/ Làm thế nào để xoá một tập tin:

Kill "F : \ My Documents \ My Workbook.xls"
Nếu bạn không chỉ ra ổ đĩa, Excel sử dụng ổ đĩa hiện hành. Nếu bạn không chỉ ra thư mục, Excel sẽ sử dụng thư mục hiện hành.

5/ Làm thế nào để tạo thư mục mới:

MkDir "NewPrivateFolder" ' Tạo một thư mục mới trong thư mục hiện hành
MkDir "F : \ My Documents \ NewPrivateFolder"
' Tạo một thư mục mới trong thư mục F: \ My Documents

6/ Làm thế nào để xoá một thư mục (thư mục phải là rổng):

RmDir "NewPrivateFolder"
' Xóa thư mục con NewPrivateFolder trong thư mục hiện hành
RmDir "F : \My Documents\NewPrivateFolder"
' Xóa thư mục con NewPrivateFolder trong thư mục FMy Documents

7/ Làm thế nào để sao chép một tập tin (Tập tin phải là tập tin đóng):

FileCopy "OrgWorkBook.xls", "CopyWorkBook.xls"
' Sao chép OrgWorkBook.xls sang CopyWorkBook.xls trong thư mục hiện hành
FileCopy "OrgWorkBook.xls", "F : \ My Documents \ CopyWorkBook.xls"
' Sao chép OrgWorkBook.xls từ thư mục hiện hành sang F : \ My Documents \ CopyWorkBook.xls

8/ Làm thế nào để di chuyển một tập tin (Tập tin phải là tập tin đóng):

OldFilePath = "C : \ OldFolder \ Filename.xls" ' đường dẫn tập tin gốc
NewFilePath = "C : \ NewFolder \ Filename.xls" ' đường dẫn tập tin mới
Name OldFilePath As NewFilePath ' di chuyển tập tin
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Web KT
Back
Top Bottom