Tác giả: truongphu
Mô tả: Tổng Quát về Các Lệnh Mở File. Mong được các bạn giúp đở thêm bài viết vì chữ Tổng Quát "to' quá
A- Lệnh gọi thi hành
A- 1) Lệnh Shell: tham khảo VBLib
* Gọi trình WinWord, Phải có path của WINWORD.EXE. Theo thói quen, có thể bỏ phần ".exe" Ví dụ:
Code: Select all
aaa = Shell("D:\Office\Microsoft Office\Office10\WINWORD", 1)
Code: Select all
aaa = Shell("D:\Office\Microsoft Office\Office10\WINWORD C:\MùaThu~1.doc", 1)
Code: Select all
NotRun = Shell("D:\Office\Microsoft Office\Office10\WINWORD.EXE" "C:\Mùa Thu Lá bay", 1)
Code: Select all
aaa = Shell("C:\Program Files\Windows NT\Accessories\wordpad c:\windows\system32\calc.exe", 1)
Code: Select all
aaa = Shell ("calc")
Code: Select all
Shell "calc"
Code: Select all
Shell "D:\Office\Microsoft Office\Office10\WINWORD"Shell "D:\Office\Microsoft Office\Office10\WINWORD C:\MùaThu~1.doc"
ShellExecute là tự chạy một yêu cầu, có thể là một file, hay một câu lệnh, VỚI ĐIỀU KIỆN LÀ FILE ĐÓ, HAY CÂU LỆNH ĐÓ ĐÃ ĐƯỢC KHAI BÁO TRONG WINDOWS LÀ MỞ VỚI TRÌNH NÀO
Vậy thì một file hay một câu lệnh chưa đăng ký "Open With" thì ShellExecute cũng vô tác dụng!
Vì lý do trên, ta nên cân nhắc khi gọi ShellExecute, ví dụ muốn xem nội dung một file không có đuôi mở rộng, ta chỉ cần gọi Shell để chạy Notepad hay Wordpad load file cần xem, tránh khai báo rườm rà không cần thiết.
Khai báo hàm API:
Code: Select all
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub Form_Load()ShellExecute Me.hwnd, vbNullString, "C:\Mùa Thu Lá Bay.doc", vbNullString, "C:\", 1End Sub
A- 3) VBScript
* Gọi một ứng dụng
Các dòng lệnh sau tương đương với các dòng lệnh của Shell:
Set objShell = CreateObject("Wscript.Shell")
Code: Select all
objShell.Run "calc"objShell.Run ("ping 10.0.0.2")objShell.Run "WINWORD"objShell.Run "EXCEL"
* Mở một file văn bản
Code: Select all
Set objword = CreateObject("Word.Application").Documents.Open("C:\Mùa Thu Lá Bay.Doc", 1)
B- 1) Lệnh Open: tham khảo VBLib
a- Chuyên mở file TXT
trích VBLib:
Code: Select all
Private Sub Form_Load()Dim TextLine Open "TESTFILE" For Input As #1' Mo file Ðê Ðoc. Do While Not EOF(1) Line Input #1, TextLine' Ðoc tung dòng gán vào biên TextLine Debug.Print TextLine' In ra màn hình Loop Close #1' Ðóng file.End Sub
trích VBLib: (trong VBLib phần nầy còn sót vài thành phần. Code sau đây hoàn chỉnh hơn)
Code: Select all
Private Sub Form_Load()Dim fNum As Long, B() As Byte, fp fp = "C:\Mùa Thu Lá Bay.txt" fNum = FreeFile() Open fp For Binary Access Read As #fNum ReDim B(LOF(fNum)) Get #fNum, , B Close #fNum Dim arr, i As Integer, s As String arr = Split(B, vbCrLf) For i = 0 To UBound(arr) s = s & arr(i) & vbCrLf Next iTextBox1 = sEnd Sub
Đọc bất kể mã unicode! quá gọn
Code: Select all
Private Function ReadFileUni(FileName As String) As StringDim FSO Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 1, , -2) ReadFileUni = FSO.Readall Set FSO = NothingEnd Function Private Sub Form_Load()TextBox1 = ReadFileUni("C:\Mùa Thu Lá Bay.txt")End Sub
Code: Select all
Private Sub Form_Load()Set objWord = CreateObject("Word.Application")objWord.ChangeFileOpenDirectory ("C:\")objWord.FileDialog(1).Title = "Select the files" If objWord.FileDialog(1).Show = -1 Then For Each objFile In objWord.FileDialog(1).SelectedItems Set objDoc = objWord.Documents.Open(objFile) objDoc.Range.Copy NextEnd If TextBox1.PasteobjWord.QuitEnd Sub

Bổ sung: Đọc file txt từng dòng
Code: Select all
Private Function ReadLineText(FileName As String) As StringConst ForReading = 1, ForWriting = 2, TriStateTrue = -2Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 1, False, -2) Do Until FSO.AtEndOfStream ReadLineText = ReadLineText & FSO.ReadLine & vbCrLf Loop Set FSO = NothingEnd Function Private Sub Form_Load()MsgBox ReadLineText("C:\Mùa Thu Lá Bay.txt")End Sub