- Tham gia
- 3/6/06
- Bài viết
- 1,611
- Được thích
- 14,001
- Nghề nghiệp
- ...thiết kế máy bay cho VOI tự lái...^.^
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.
Ví dụ: trong module tôi khai báo biến như sau
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:
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.
Các bạn có thể tham khảo thêm bài: Thao tác với tập tin *.ini (Vì tập tin *.ini có cấu trúc theo Section và Key)
Chúc các bạn thành công.
Lê Văn Duyệt
Mã:
'******************************************************************
' Module này nhằm đọc dữ liệu từ tập tin tẽt *.txt
' Như vậy khi mở tập tin
' các số liệu thiết lập cho chương trình sẽ được đưa vào
' Chú ý: Tập tin *.txt này phải đặt trong cùng thư mục với workbook đang thao tác
'
' Đây là cách đơn giản, tôi đề nghị các bạn nên tham khảo bài viết thao tác với tập tin *.ini
'******************************************************************
Public Function GetInformations(InformationName As String) As String
Dim StrPathFile As String
Dim f As Integer
Dim StrWord As String
On Error GoTo TBLoi
' Biến chứa đường dẫn của Workbook [/COLOR]
StrPathFile = Application.ThisWorkbook.Path
' Nếu StrPath không có ký tự cuối là "\" thì ta thêm vào
If Right(StrPathFile, 1) <> "\" Then
StrPathFile = StrPathFile & "\Config.txt"
Else
StrPathFile = StrPathFile & "Config.txt"
End If
' Kiểm tra sự tồn tại của tập tin Config.txt
' Nếu không tồn tại sẽ đi đến thông báo lỗi
If Not PathExists(StrPathFile) Then GoTo TBLoi
' Bắt đầu lấy dữ liệu
f = FreeFile
Open StrPathFile For Input As f
' Đọc cho đến cuối tập tin
Do While Not EOF(f)
Line Input #f, StrWord
' Đọc và so sánh dữ liệu trước khi gán
If LCase(Left(StrWord, InStr(1, StrWord, "=") - 1)) = LCase(InformationName) Then
' Gán giá trị bên phải của chuỗi tại vị trí dấu =
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
Mã:
Public TenWB as String
Mã:
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.
Các bạn có thể tham khảo thêm bài: Thao tác với tập tin *.ini (Vì tập tin *.ini có cấu trúc theo Section và Key)
Chúc các bạn thành công.
Lê Văn Duyệt
Chỉnh sửa lần cuối bởi điều hành viên: