1. Trang chủ
  2. » Công Nghệ Thông Tin

Tổng quát về các lệnh mở file Visual2013

6 151 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 75,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.. aaa = Shell

Trang 1

Tổng Quát về Các Lệnh Mở File

gửi bởi truongphu » Thứ 4 30/04/2008 10:10 am

Thủ thuật: Tổng Quát về Các Lệnh Mở File

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ụ:

Mã: Chọn tất cả

1. aaa = Shell ( "D:\Office\Microsoft Office\Office10\WINWORD" , 1)

* Gọi trình WinWord và mở file doc nào đó:

Mã: Chọn tất cả

1. aaa = Shell ( "D:\Office\Microsoft Office\Office10\WINWORD C:\MùaThu~1.doc" , 1)

Lưu ý: tên file không được có space, ví dụ sau sẽ không chạy được:

Mã: Chọn tất cả

1. NotRun = Shell ( "D:\Office\Microsoft Office\Office10\WINWORD.EXE" "C:\Mùa Thu

Lá bay" , 1)

* Ta có thể dùng trình văn bản để mở một file bất kỳ, đọc thấy toàn mã máy:

Mã: Chọn tất cả

1. aaa = Shell ( "C:\Program Files\Windows NT\Accessories\wordpad c:\windows\

system32\calc.exe" , 1)

* Khi Shell gọi một trình của MS Windows (ví dụ calc.exe) trong các thư mục gốc hay hệ

Trang 2

thống (windows\ hay windows\system32), do khi khởi động, biến môi trường đã nộp vào

bộ nhớ nên ta có thể bỏ qua đường dẫn, bất kể trên máy nào đó có cài winXP ở đâu! Mã: Chọn tất cả

1. aaa = Shell ( "calc" )

hoặc gọn hơn nữa

Mã: Chọn tất cả

1. Shell "calc"

nguyên tắc gọn nầy cũng dùng với các trình khác:

Mã: Chọn tất cả

1. Shell "D:\Office\Microsoft Office\Office10\WINWORD"

2. Shell "D:\Office\Microsoft Office\Office10\WINWORD C:\MùaThu~1.doc"

A- 2) Lệnh ShellExecute:

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:

Mã: Chọn tất cả

1 Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long , ByVal lpOperation As String , ByVal lpFile

2

3 As String , ByVal lpParameters As String , ByVal lpDirectory As String , ByVal

nShowCmd As Long ) As Long

4 Private Sub Form_Load()

5 ShellExecute Me hwnd, vbNullString , "C:\Mùa Thu Lá Bay.doc" , vbNullString , "C:\" , 1

6 End Sub

Nhận xét: Tên file tự do

A- 3) VBScript

Trang 3

* 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")

Mã: Chọn tất cả

1. objShell.Run "calc"

2. objShell.Run ( "ping 10.0.0.2" )

3. objShell.Run "WINWORD"

4. objShell.Run "EXCEL"

Nhận xét: Tốn một câu khai báo: "Set objShell = ", nhưng khi chạy các ứng dụng đã đăng ký, ví dụ WinWord thì khỏi khai path, khác với Shell

* Mở một file văn bản

Mã: Chọn tất cả

1. Set objword = CreateObject ( "Word.Application" ).Documents Open ( "C:\Mùa Thu Lá Bay.Doc" , 1)

B- Lệnh mở và thao tác trên file với thao tác cơ bản là Đọc, Ghi Trong bài viết nầy chỉ minh họa thao tác Đọc

B- 1) Lệnh Open: tham khảo VBLib

a- Chuyên mở file TXT

trích VBLib:

Mã: Chọn tất cả

1 Private Sub Form_Load()

2 Dim TextLine

3 Open "TESTFILE" For Input As #1' Mo file Ðê Ðoc.

4 Do While Not EOF (1)

5 Line Input #1, TextLine' Ðoc tung dòng gán vào biên TextLine

6 Debug Print TextLine' In ra màn hình

7 Loop

8 Close #1' Ðóng file.

9 End Sub

b- Đọc text Unicode

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)

Mã: Chọn tất cả

1 Private Sub Form_Load()

2 Dim fNum As Long , B() As Byte, fp

3 fp = "C:\Mùa Thu Lá Bay.txt"

4 fNum = FreeFile ()

5 Open fp For Binary Access Read As #fNum

Trang 4

6 ReDim B( LOF (fNum))

7 Get #fNum, , B

8 Close #fNum

9

10 Dim arr, i As Integer , s As String

11 arr = Split (B, vbCrLf )

12 For i = 0 To UBound (arr)

13 s = s & arr(i) & vbCrLf

14 Next i

15 TextBox1 = s

16 End Sub

B- 2) VBScript cho TXT: Tham khảo thêm Mục Tip VB

Đọc bất kể mã unicode! quá gọn

Mã: Chọn tất cả

1 Private Function ReadFileUni(FileName As String ) As String

2 Dim FSO

3 Set FSO = CreateObject ( "Scripting.FileSystemObject" ).OpenTextFile(FileName, 1, , -2)

4 ReadFileUni = FSO.Readall

5 Set FSO = Nothing

6 End Function

7

8 Private Sub Form_Load()

9 TextBox1 = ReadFileUni( "C:\Mùa Thu Lá Bay.txt" )

10 End Sub

B- 3) VBScript cho Doc (hoặc dưới nó như RTF, TXT): Tham khảo thêm Mục Tip VB

Mã: Chọn tất cả

1 Private Sub Form_Load()

2 Set objWord = CreateObject ( "Word.Application" )

3 objWord.ChangeFileOpenDirectory ( "C:\" )

4 objWord.FileDialog(1).Title = "Select the files"

5

6 If objWord.FileDialog(1).Show = -1 Then

7 For Each objFile In objWord.FileDialog(1).SelectedItems

8 Set objDoc = objWord.Documents Open (objFile)

9 objDoc.Range.Copy

10 Next

11 End If

12

13 TextBox1.Paste

14 objWord.Quit

15 End Sub

Sáng 30/4/08 rảnh, chiều có thể nghỉ bù!

Trang 5

Bổ sung: Đọc file txt từng dòng

Mã: Chọn tất cả

1 Private Function ReadLineText(FileName As String ) As String

2 Const ForReading = 1, ForWriting = 2, TriStateTrue = -2

3 Dim FSO: Set FSO =

CreateObject ( "Scripting.FileSystemObject" ).OpenTextFile(FileName, 1, False , -2)

4 Do Until FSO.AtEndOfStream

5 ReadLineText = ReadLineText & FSO.ReadLine & vbCrLf

6 Loop

7 Set FSO = Nothing

8 End Function

9

10 Private Sub Form_Load()

11 MsgBox ReadLineText( "C:\Mùa Thu Lá Bay.txt" )

12 End Sub

lệnh FSO.Readall sẽ thành lệnh FSO.ReadLine

Thêm Do Until FSO.AtEndOfStream

Loop để duyệt từng dòng

Các code khác như cũ Tôi đã bổ sung ở trên, phần cuối bài

Dùng lệnh Shell gọi Word ra để mở một file doc nguyên tắc là OK

Tuy nhiên khi thực hành bằng code, rất nhiều bạn thất bại, lý do:

1- Khai báo code chưa đúng

2- Đường dẫn WinWord dài bao nhiêu cũng được, nhưng đường dẫn file doc TUYỆT

ĐỐI PHẢI 8.3

3- chưa hổ trợ tên file (hay đường dẫn) có tiếng Việt

Để đơn giản hóa vấn đề, tôi viết một Project: Dùng CommonDialog (khai bằng code) gọi lần lượt WinWord và File Doc, giao cho SHELL xử lý

Mã: Chọn tất cả

1 Private Declare Function GetShortPathName Lib "kernel32" Alias

"GetShortPathNameA" (ByVal lpszLongPath As String , ByVal lpszShortPath As String , ByVal lBuffer As Long ) As Long

2

3 Private Sub Command1_Click()

4 Dim WordPath$

5 MsgBox "Tìm WinWord o' Ðâu ?"

6 WordPath = CDL(3, "D:\Office\Microsoft Office\OFFICE11" )

7 If WordPath = "" Then Exit Sub

8 MsgBox "Tìm thâ'y Word.EXE o':" & vbCrLf & WordPath & vbCrLf & "Mo' File Word o' Ðâu ?" & vbCrLf & "(KHÔNG HÔ TRO' FILENAME TIÊ'NG VIÊT)"

9 Shell WordPath & " " & ShortPath(CDL(, "D:\MY DOCUMENTS" )), vbNormalFocus

10 End Sub

11

12.

13.

Trang 6

cộng tổng các column theo điều kiện giá trị

gửi bởi tdc » Thứ 4 18/12/2013 3:07 pm

em có file dữ liệu access được tạo column như sau "ngay - N01 - N02 - N03 - N31" trong đó các columns từ N01 cho đến N31 là dạng number để cộng tổng em đã dùng câu truy vấn như sau

Mã: Chọn tất cả

If rs.State = 1 Then: rs.Close

rs.Open "SELECT

N01+N02+N03+N04+N05+N06+N07+N08+N09+N10+N11+N12+N13+N14+N15+N16+N17+N 18+N19+N20+N21+N22+N23+N24+N25+N26+N27+N28+N29+N30+N31 AS tongcong FROM bang_cong WHERE thang='" _

& thangnam & "' and ho_ten='" & List1.List(i) & "'", DB, adOpenKeyset,

adLockPessimistic

Ngày đăng: 13/04/2018, 11:42

🧩 Sản phẩm bạn có thể quan tâm

w