KHỞI TẠO CÁC BIẾN TỪ FILE *.TXT HAY *.INI
Trong một số chương trình, để việc khởi tạo các giá trị cho các biến được linh động và tránh việc phải mở module ra sửa trực tiếp các lập trình viên thường đặt chúng vào một file bên ngoài. Tôi xin giới thiệu với các bạn đọan mã đọc các giá trị từ một file text (các bạn cũng có thể dùng file *.ini) bên ngòai.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Module nay nham doc du lieu tu file *.txt
' Neu ban muon la file *.ini thi ban chinh sua lai ma
' Nhu vay khi tap tin duoc mo
' cac so lieu can cho chuong trinh se duoc nap vao
' Chu y: File nay phai duoc dat trong cung thu muc
' voi Workbook thao tac
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function GetInformations(InformationName As String) As String
Dim StrPathFile As String
Dim f As Integer
Dim StrWord As String
On Error GoTo TBLoi
' Ten duong dan cua Workbook
StrPathFile = Application.ThisWorkbook.Path
' Neu StrPath khong co ky tu cuoi la "\" thi ta them vao
If Right(StrPathFile, 1) <> "\" Then
StrPathFile = StrPathFile & "\Config.txt"
Else
StrPathFile = StrPathFile & "Config.txt"
End If
' Kiem tra su ton tai cua File Config.ini
' Neu khong ton tai thi nhay toi thong bao loi
If Not PathExists(StrPathFile) Then GoTo TBLoi
' Bat dau lay du lieu
f = FreeFile
Open StrPathFile For Input As f
' Doc cho den cuoi File
Do While Not EOF(f)
Line Input #f, StrWord
' Doc va so sanh du lieu truoc khi gan
If LCase(Left(StrWord, InStr(1, StrWord, "=") - 1)) = LCase(InformationName) Then
' Gan gia tri ben phai cua chuoi,
' tai vi tri dau =, cong cho 1
GetInformations = Mid(StrWord, InStr(1, StrWord, "=") + 1)
End If
Loop
Close f
Exit Function
TBLoi:
GetInformations = ""
End Function
Ví dụ: trong module tôi khai báo biến như sau
Public TenWB as String
Sau đó tôi muốn trong chương trình của tôi khởi tạo các biến được lấy từ file config.txt được đặt cùng thư mục với tập tin excel hiện hành tôi có thủ tục khởi tạo biến như sau:
Sub KhoiTaoBien()
TenWB = GetInformations("TenWB")
End Sub
Và trong chương trình các bạn chỉ việc kiểm tra biến TenWB, nếu biến TenWB="" thì bạn không thực hiện các thao tác.
Chúc các bạn thành công.
Lê Văn Duyệt
levanduyet@yahoo.com
Trong một số chương trình, để việc khởi tạo các giá trị cho các biến được linh động và tránh việc phải mở module ra sửa trực tiếp các lập trình viên thường đặt chúng vào một file bên ngoài. Tôi xin giới thiệu với các bạn đọan mã đọc các giá trị từ một file text (các bạn cũng có thể dùng file *.ini) bên ngòai.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Module nay nham doc du lieu tu file *.txt
' Neu ban muon la file *.ini thi ban chinh sua lai ma
' Nhu vay khi tap tin duoc mo
' cac so lieu can cho chuong trinh se duoc nap vao
' Chu y: File nay phai duoc dat trong cung thu muc
' voi Workbook thao tac
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function GetInformations(InformationName As String) As String
Dim StrPathFile As String
Dim f As Integer
Dim StrWord As String
On Error GoTo TBLoi
' Ten duong dan cua Workbook
StrPathFile = Application.ThisWorkbook.Path
' Neu StrPath khong co ky tu cuoi la "\" thi ta them vao
If Right(StrPathFile, 1) <> "\" Then
StrPathFile = StrPathFile & "\Config.txt"
Else
StrPathFile = StrPathFile & "Config.txt"
End If
' Kiem tra su ton tai cua File Config.ini
' Neu khong ton tai thi nhay toi thong bao loi
If Not PathExists(StrPathFile) Then GoTo TBLoi
' Bat dau lay du lieu
f = FreeFile
Open StrPathFile For Input As f
' Doc cho den cuoi File
Do While Not EOF(f)
Line Input #f, StrWord
' Doc va so sanh du lieu truoc khi gan
If LCase(Left(StrWord, InStr(1, StrWord, "=") - 1)) = LCase(InformationName) Then
' Gan gia tri ben phai cua chuoi,
' tai vi tri dau =, cong cho 1
GetInformations = Mid(StrWord, InStr(1, StrWord, "=") + 1)
End If
Loop
Close f
Exit Function
TBLoi:
GetInformations = ""
End Function
Ví dụ: trong module tôi khai báo biến như sau
Public TenWB as String
Sau đó tôi muốn trong chương trình của tôi khởi tạo các biến được lấy từ file config.txt được đặt cùng thư mục với tập tin excel hiện hành tôi có thủ tục khởi tạo biến như sau:
Sub KhoiTaoBien()
TenWB = GetInformations("TenWB")
End Sub
Và trong chương trình các bạn chỉ việc kiểm tra biến TenWB, nếu biến TenWB="" thì bạn không thực hiện các thao tác.
Chúc các bạn thành công.
Lê Văn Duyệt
levanduyet@yahoo.com