• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Các bài viết VB ứng dụng MS Word

Các mẹo vặt linh tinh khác, không thuộc nhóm nào
User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Các bài viết VB ứng dụng MS Word

Postby truongphu » Thu 25/12/2008 3:07 pm

Thủ thuật: Các bài viết VB ứng dụng MS Word
Tác giả: truongphu
Mô tả: Nhằm đáp ứng những thắc mắc liên quan đến việc ứng dụng MS Word với VB, tôi mở đề mục nầy để các bạn tiện tra cứu và trao đổi.


* Nhằm đáp ứng những thắc mắc liên quan đến việc ứng dụng MS Word với VB, tôi mở đề mục nầy để các bạn tiện tra cứu và trao đổi
* Đề mục sẽ thường xuyên được cập nhật: gom góp từ các bài cũ, viết bài mới, các câu hỏi và trả lời mà các bạn cùng đóng góp
Mong các bạn ủng hộ


1- Thao tác cơ bản: Tạo mới một file Word và mở một file Word có sẵn
Trong hầu hết các bài trong đề mục nầy, project sẽ được add references MS Word 11.0 (hay 10.0) Object Library (MSWORD.OLB), mong các bạn chú ý
A- Tạo mới một file Word

Code: Select all

  1. Private Sub Form_Load()
  2. 'Kho'i tao biên U'ng dung Word. Ðây là biên phai có
  3. Dim WordApp As New Word.Application
  4. 'Kho'i tao biên file
  5. Dim DocApp As Document
  6. 'Gán biên file là u'ng dung Word tao mo'i
  7. Set DocApp = WordApp.Documents.Add
  8. 'Lu'u file doc mo'i tao
  9. DocApp.SaveAs ("C:\Test.doc")
  10. 'Thoát các biên
  11. DocApp.Close
  12. WordApp.Quit
  13. MsgBox "Ðã làm file Doc"
  14. End Sub


B- Mở một file Word có sẵn

Code: Select all

  1. Private Sub Command1_Click()
  2. 'Kho'i tao biên U'ng dung Word. Ðây là biên phai có
  3. Dim WordApp As New Word.Application
  4. 'Kho'i tao biên file
  5. Dim DocApp As Document
  6. 'Gán biên file là u'ng dung Word mo' file
  7. Set DocApp = WordApp.Documents.Open("C:\Test.doc")
  8. 'Hiên u'ng dung
  9. WordApp.Visible = True
  10. End Sub
Last edited by truongphu on Fri 26/12/2008 2:01 pm, edited 1 time in total.


o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Ghi nội dung vào Word. Tìm từ

Postby truongphu » Thu 25/12/2008 3:34 pm

2- Ghi nội dung vào Word. Tìm từ

Code: Select all

  1. Private Sub Command2_Click()
  2. Dim WordApp As New Word.Application
  3. Dim DocApp As Document
  4. Set DocApp = WordApp.Documents.Open("C:\Test.doc")
  5. 'Kho'i tao biên Chon
  6. Dim Selectapp As Object
  7. 'Gán biên Chon là u'ng dung Word chon
  8. Set Selectapp = WordApp.Selection
  9.  
  10.  
  11. 'Ghi vào file nôi dung
  12. Selectapp.Range = "CLB VB"
  13. DocApp.Save
  14. MsgBox "Ðã Ghi" 
  15.  
  16.  
  17. 'Tìm và su'a nôi dung
  18. Selectapp.Find.Text = "CLB"
  19. Selectapp.Find.Forward = True 'vê phia truo'c
  20. Selectapp.Find.MatchWholeWord = True 'toàn file
  21.  
  22. Selectapp.Find.Replacement.Text = "Câu Lac Bô" '<-- tu` thay
  23. Selectapp.Find.Execute , , , , , , , , , , wdReplaceAll
  24. DocApp.Save
  25. DocApp.Close
  26. MsgBox "Ðã thay thê'"
  27. End Sub
  28.  
Last edited by truongphu on Fri 26/12/2008 2:03 pm, edited 1 time in total.
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Chèn giá tri vào table trong Word

Postby truongphu » Thu 25/12/2008 9:09 pm

3- Chèn giá tri vào table trong Word
gửi bởi npcuong6l » 25/12/2008 10:31 am (Thùng Rác vì Tiêu đề vi phạm nội quy)
mình không viết được đoạn code để lấy nội dung của một ô trong table của word?(mình dùng chương trình VB6)
mình có đính kèm hình ảnh của table.


Code: Select all

  1. Dim www As New Word.Application
  2. Dim ddd As New Word.Document
  3. Set ddd = www.Documents.Open(App.Path & "\aaa.doc")
  4. With www
  5. ddd.Tables(1).Rows(1).Select
  6. ddd.Tables(1).Cell(1, 1).Select
  7.  
  8. .Selection.Text = "Tên Nhân Viên"
  9. ddd.Tables(1).Cell(1, 2).Select
  10. .Selection.Text = "Ngày Sinh"
  11.  
  12. ddd.Tables(1).Rows(2).Select
  13. ddd.Tables(1).Cell(2, 1).Select
  14. .Selection.Text = "Lê van Ân"
  15. ddd.Tables(1).Cell(2, 2).Select
  16. .Selection.Text = "25/12/1990"
  17. End With
  18. ddd.Save
  19. www.Quit
  20. MsgBox "Ðã ghi các giá tri vào Table"
Last edited by truongphu on Fri 26/12/2008 2:05 pm, edited 2 times in total.
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Tạo một Table trong Word

Postby truongphu » Fri 26/12/2008 11:18 am

4- Tạo một Table trong Word

Code: Select all

  1. Private Sub Command1_Click()
  2. Dim www As New Word.Application
  3. Dim ddd As New Word.Document
  4. Set ddd = www.Documents.Open(App.Path & "\aaa.doc")
  5. With ddd
  6. .Tables.Add Range:=www.Selection.Range, NumRows:=2, NumColumns:=5, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed
  7. .Tables(1).Rows(1).Select
  8. .Tables(1).Cell(1, 2).Select
  9. Selection.Text = "test"
  10. .Save
  11. .Close
  12. End With
  13. www.Quit
  14. MsgBox "Ðã làm Table xong"
  15. End Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Đọc giá trị của Cell trong Table

Postby truongphu » Fri 26/12/2008 1:59 pm

Ở bài 3: Hóa ra bạn npcuong6l muốn đọc ô trong table

4- Đọc giá trị của Cell trong Table

Code: Select all

  1. Private Sub Command2_Click()
  2. Dim www As New Word.Application
  3. Dim ddd As New Word.Document
  4. Set ddd = www.Documents.Open(App.Path & "\aaa.doc")
  5. With ddd
  6. .Tables(1).Rows(1).Select
  7. .Tables(1).Cell(1, 2).Select
  8. ' Cách 1: Ðoc nhanh
  9. MsgBox www.Selection.Text
  10.  
  11. ' Cách 2: Ðoc Ðúng
  12. Dim ÐocWord$
  13. www.Selection.Range.Copy
  14. ÐocWord = Clipboard.GetText
  15. MsgBox ÐocWord
  16. .Close
  17. End With
  18. www.Quit
  19. End Sub
  20.  
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Ghi tiếp vào file Word

Postby truongphu » Fri 26/12/2008 4:00 pm

các kỹ thuật trình bày ở trên ứng dụng cho file mới: ghi từ đầu file
5- Ghi tiếp vào file Word

Code: Select all

  1. Private Sub Command3_Click()
  2.  'Appending Text
  3. Const wdStory = 6
  4. Const wdMove = 0
  5.  
  6. Dim www As New Word.Application
  7. Dim ddd As New Word.Document
  8. Set ddd = www.Documents.Open(App.Path & "\aaa.doc")
  9. 'Cách 1 dùng Selection
  10. www.Selection.EndKey wdStory, wdMove
  11. www.Selection.TypeParagraph 'Xuông dòng
  12.  
  13. www.Selection.TypeText "Ghi nôi thêm 1"
  14.  
  15.  
  16. 'Cách 2 dùng Range
  17. ddd.Range.Collapse
  18. ddd.Range.InsertAfter ("Ghi nôi thêm 2")
  19.  
  20. ddd.Save
  21. www.Quit
  22. MsgBox "Ðã ghi nôi thêm"
  23. End Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Mở file word với FileDialog

Postby truongphu » Fri 26/12/2008 4:10 pm

6- Mở file word với FileDialog
Sau đây là code thu gọn và hiệu quả nhất:

Code: Select all

  1. Dim WordApp As New Word.Application
  2. Dim DocApp As Document
  3. WordApp.ChangeFileOpenDirectory (App.Path)
  4. WordApp.FileDialog(1).Filters.Add "Doc", "*.doc", 1
  5.     If WordApp.FileDialog(1).Show = -1 Then
  6.         Set DocApp = WordApp.Documents.Open(WordApp.FileDialog(1).SelectedItems.Item(1))
  7.     Else
  8.         WordApp.Quit
  9.     End If
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Ghi ở đầu file

Postby truongphu » Fri 26/12/2008 6:08 pm

7- Ghi ở đầu file

Code: Select all

  1. Dim www As New Word.Application
  2. Dim ddd As New Word.Document
  3. Set ddd = www.Documents.Open(App.Path & "\aaa.doc")
  4. 'Cách 1 dùng selection
  5. www.Selection.InsertBefore ("Ghi Ðâu file 1")
  6.  
  7. 'cách 2 dùng Range
  8. ddd.Range.InsertBefore ("Ghi Ðâu file 2")
  9.  
  10. ddd.Save
  11. www.Quit
  12. MsgBox "Ðã ghi Ðâu file"
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Điều khiển con trỏ di chuyển và xóa từ

Postby truongphu » Sat 27/12/2008 10:32 am

8- Điều khiển con trỏ di chuyển và xóa từ

Code: Select all

  1. Private Sub Command5_Click()
  2. Dim www As New Word.Application
  3. Dim ddd As New Word.Document
  4. Set ddd = www.Documents.Open(App.Path & "\aaa.doc")
  5.  
  6. ' A- Muốn move con tro, dùng câu lênh sau đây
  7. 'Move bên phai, Ðo'n vi = tu`, vi trí Ðên Ðâu?: vd là 20 tu'`
  8. www.Selection.MoveRight Unit:=wdWord, Count:=20, Extend:=wdMove
  9.  
  10. ' B- Muốn bôi Ðen môt nhóm tu`, dùng câu lênh sau
  11. 'Move phai, Ðo'n vi = tu`, chon mây tu` tiêp theo?: vd là 12 tu'`
  12. www.Selection.MoveRight Unit:=wdWord, Count:=12, Extend:=wdExtend
  13.  
  14. ' C- Xóa các tu'` Ðã chon:
  15. www.Selection.Delete
  16.  
  17. ddd.Save
  18. www.Quit
  19. MsgBox "Ðã Xóa nôi dung"
  20.  
  21. End Sub
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Cách chọn text trong Word

Postby truongphu » Sun 28/12/2008 5:19 am

Lưu ý:
Tù bài nầy trở đi, các câu lệnh khai báo hay lưu, thoát... được lược bỏ, chỉ viết những câu lệnh chính.
Tùy từng bối cảnh mà các bạn hãy thay đổi các Class hay Properties của Word cho thích hợp.
Các lệnh sau, nếu đối tượng chọn không có, có thể báo lỗi.


9- Cách chọn text trong Word

* Chọn Table, vd Table 1

Code: Select all

  1. ActiveDocument.Tables(1).Select


* Chọn Field, vd field 1

Code: Select all

  1. ActiveDocument.Fields(1).Select


* Chọn 4 dòng đầu:

Code: Select all

  1. Dim rngParagraphs As Range
  2.     Set rngParagraphs = ActiveDocument.Range( _
  3.         Start:=ActiveDocument.Paragraphs(1).Range.Start, _
  4.         End:=ActiveDocument.Paragraphs(4).Range.End)
  5.     rngParagraphs.Select


* Chọn một từ đầu tiên:

Code: Select all

  1. ActiveDocument.Words(1).Select
  2.  
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Chỉnh sửa Text trong Word

Postby truongphu » Sun 28/12/2008 8:58 am

10- Chỉnh sửa Text trong Word

(Ghi chú: tôi viết bài hới ngẫu hứng nên đề mục có thể hơi lộn xộn và nội dung có thể nhắc lại)

1- Type Property
Property Type của đối tượng Selection cho biết thông tin về Selection
Ví dụ sau sẽ cho biết nếu Selection là điểm nháy của con trỏ

Code: Select all

  1. If Selection.Type = wdSelectionIP Then MsgBox "Nothing is selected"


2- Collapse method
Dùng phương thức collapse để đưa con trỏ trong một Selection hay Range tới điểm đầu hay cuối.
Các bài trước có nhắc đến việc dùng collapse.
Ví dụ sau đưa con trỏ đến đầu Selection

Code: Select all

  1. Selection.Collapse Direction:=wdCollapseStart


Ví dụ sau đưa con trỏ đến cuối range (cho range = tứ thú nhất) và chèn text vào:

Code: Select all

  1. Dim rngWords As Range
  2.     Set rngWords = ActiveDocument.Words(1)
  3.     With rngWords
  4.         .Collapse Direction:=wdCollapseEnd
  5.         .Text = "(This is a test.) "
  6.     End With


3- MoveEnd method
MoveLeft, MoveRight, MoveUp, và MoveDown cũng có thể được dùng với đối tượng Selection.
các bài ở trên có nhắc đến.
Ví dụ sau đưa con trỏ đến cuối 3 từ di chuyển

Code: Select all

  1. Selection.MoveEnd Unit:=wdWord, Count:=3


Ví dụ sau mở rông Range từ một câu đầu tiên thành 3 câu đầu tiên

Code: Select all

  1. Dim rngParagraphs As Range
  2.     Set rngParagraphs = ActiveDocument.Paragraphs(1).Range
  3.     rngParagraphs.MoveEnd Unit:=wdParagraph, Count:=2


Sau khi đã điều khiển con trỏ như ý muốn, ta có thể chỉnh sửa text

4- Dùng Text property
Thay chữ đầu bằng chữ "The "

Code: Select all

  1. ActiveDocument.Words(1).Text = "The "


5- Dùng SetRange để định nghĩa lại cho Range đang tồn tại và tiến hành edit: Xóa và chèn

Code: Select all

  1. Dim rngFirstParagraph As Range
  2.     Set rngFirstParagraph = ActiveDocument.Paragraphs(1).Range
  3.     With rngFirstParagraph
  4.         .Delete
  5.         .InsertAfter Text:="New text"
  6.         .InsertParagraphAfter
  7.     End With
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu1
Thành viên chính thức
Thành viên chính thức
Posts: 17
Joined: Sun 28/12/2008 7:38 pm
Been thanked: 1 time

Tìm text và chọn

Postby truongphu1 » Sun 28/12/2008 8:00 pm

11- Tìm text và chọn

Code: Select all

  1. With Selection.Find
  2.     .Forward = True
  3.     .Wrap = wdFindStop
  4.     .Text = "Hello"
  5.     .Execute
  6. End With


Trong ví dụ trên, ta dùng đối tượng Find với các thuộc tính và phương thức. Đối tượng find tự nó cũng có thể dùng phương thức Execute như sau:

Code: Select all

  1. Selection.Find.Execute FindText:="Hello", Forward:=True, Wrap:=wdFindStop

 
Lệnh Find có thể dùng cho các đối tượng khác

Code: Select all

  1. With ActiveDocument.Content.Find
  2.     .Text = "blue"
  3.     .Forward = True
  4.     .Execute
  5.     If .Found = True Then .Parent.Bold = True
  6. End With


hoặc sau đây tương đương

Code: Select all

  1. Set myRange = ActiveDocument.Content
  2. myRange.Find.Execute FindText:="blue", Forward:=True
  3. If myRange.Find.Found = True Then myRange.Bold = True


Dùng đối tượng Replacement
Đối tượng Replacement trực tiếp dưới đối tượng Find

Code: Select all

  1. With Selection.Find
  2.     .ClearFormatting
  3.     .Text = "hi"
  4.     .Replacement.ClearFormatting
  5.     .Replacement.Text = "hello"
  6.     .Execute Replace:=wdReplaceAll, Forward:=True, _
  7.         Wrap:=wdFindContinue
  8. End With

User avatar
truongphu1
Thành viên chính thức
Thành viên chính thức
Posts: 17
Joined: Sun 28/12/2008 7:38 pm
Been thanked: 1 time

Chọn Text (tiếp)

Postby truongphu1 » Tue 30/12/2008 3:08 pm

12- Các cách chọn khác
Bài Điều khiển con trỏ có dùng: Unit:=wdWord, ta có thể dùng thêm các hằng như wdCharacter, wdSentence
(di chuyển qua phải, đếm 3 câu)

Code: Select all

  1. Doc.Selection.MoveRight Unit:=wdSentence, Count:=3, Extend:=wdMove

Cũng có nhắc đến thuộc tính Words(index) như:
(Chọn ký tự đầu tiên)

Code: Select all

  1. ActiveDocument.Words(1).Select

Tương tự, ta cũng có: Characters(index), Sentences(index), Paragraphs(index), Sections(index)
một số mẫu code áp dụng:
(Copy ký tự đầu tiên)

Code: Select all

  1. Selection.Words(1).Copy

(Copy đoạn đầu tiên)

Code: Select all

  1. ActiveDocument.Paragraphs(1).Range.Copy

(Viết hoa chữ đầu)

Code: Select all

  1. ActiveDocument.Words(1).Case = wdUpperCase

(định dạng bottom margin của section1 là 0.5 inch

Code: Select all

  1. Selection.Sections(1).PageSetup.BottomMargin = InchesToPoints(0.5)

(định dạng 2 space)

Code: Select all

  1. ActiveDocument.Content.ParagraphFormat.Space2



Dùng thuộc tính StartEnd của đối tượng Range ta có thể định vị một Range mới
(Range là 10 ký tự đầu)

Code: Select all

  1. Dim rngTenCharacters As Range
  2.     Set rngTenCharacters = ActiveDocument.Range(Start:=0, End:=10)

Hoặc:
(Range là 3 ký tự đầu)

Code: Select all

  1. Dim docActive As Document
  2.     Dim rngThreeWords As Range
  3.     Set docActive = ActiveDocument
  4.     Set rngThreeWords = docActive.Range(Start:=docActive.Words(1).Start, _
  5.         End:=docActive.Words(3).End)

(Range là đoạn 2 và đoạn 3)

Code: Select all

  1. Dim docActive As Document
  2.     Dim rngParagraphs As Range
  3.     Set docActive = ActiveDocument
  4.     Set rngParagraphs = docActive.Range(Start:=docActive.Paragraphs(2).Range.Start, _
  5.         End:=docActive.Paragraphs(3).Range.End)

ongdiamap
Thành viên tích cực
Thành viên tích cực
Posts: 118
Joined: Tue 17/08/2010 4:09 pm

Re: Các bài viết VB ứng dụng MS Word

Postby ongdiamap » Tue 14/09/2010 9:17 am

Chào anh truongphu, các bài viết của anh rất hay, nhưng em thấy hình như còn thiếu.
anh có thể hướng dẫn em cách từng dòng văn bản trong qord không vậy ?
VD: word là danh sách thế này, mổi tên là một dòng mới.
Nguyễn Văn A
Trần Văn B
Lê Thị D
......
......

Lấy và copy vàp ttable access.

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Re: Các bài viết VB ứng dụng MS Word

Postby truongphu » Thu 16/09/2010 7:45 am

Mở Word, Đọc, Tách từng dòng
Mở Access, Đọc một field, AddNew từng dòng vào field và Update

  1. Private Sub Command1_Click()
  2. Set objWord = CreateObject("Word.Application")
  3. Set objDoc = objWord.Documents.Open(App.Path & "\Doc1.doc")
  4.  
  5. Dim dòng() As String
  6. dòng = Split(objDoc.Range, vbCr)
  7.  
  8. objDoc.Close: Set objDoc = Nothing
  9. objWord.Quit: Set objWord = Nothing
  10.  
  11. Set objAccess = CreateObject("Access.Application")
  12. objAccess.OpenCurrentDatabase App.Path & "\db1.mdb"
  13. Set Rec = objAccess.CurrentDb.OpenRecordset("table1")
  14.  
  15. For i = 0 To UBound(dòng)
  16.     Rec.AddNew
  17.     Rec.fields(0).Value = dòng(i)
  18.     Rec.Update
  19. Next
  20.  
  21. objAccess.Quit: Set objAccess = Nothing
  22. Set Rec = Nothing
  23. MsgBox "Ðã xong"
  24. End Sub
  25.  
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

ongdiamap
Thành viên tích cực
Thành viên tích cực
Posts: 118
Joined: Tue 17/08/2010 4:09 pm

Re: Các bài viết VB ứng dụng MS Word

Postby ongdiamap » Mon 20/09/2010 2:04 pm

Cám ơn anh nhiều lắm.
Nhân tiện đây cho em xin hỏi anh nghe: dã sử em có một tập tin .doc, trong đó có một số nội dung, nhưng em muốn một số nội dung tự động lấy từ CSDL access khi nó chạy chương trình xuất ra văn bản .doc đó.

VD thế này: nội dung văn bản gồm:
Cộng hòa xã hội chủ nghĩa Việt Nam
......
......
Kính gởi: đồng chí tên người gởi, tên cơ quan....


Và có thể còn nhiều phần tự động cập nhật vào nữa. KHi xuất ra Báo cáo thì nó sẽ tìm tập tin .doc đó và cập nhật vào các nội dung mình đã tộ đậm từ csdl.

Rất mong anh hướng dẫn giùp.

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Re: Các bài viết VB ứng dụng MS Word

Postby truongphu » Mon 20/09/2010 5:47 pm

à đấy là mail merge
sau đây là macro tạo mail merge tôi thử làm.
Khi bạn chạy, nhớ chú ý đường dẫn khai trong macro
(Code tham khảo)

  1. Sub Macro2()
  2. '
  3. ' Macro2 Macro
  4. ' Macro recorded 9/20/2010 by Truong Phu
  5. '
  6.    Selection.HomeKey Unit:=wdStory
  7.     Selection.MoveRight Unit:=wdCharacter, Count:=42
  8.     ActiveDocument.MailMerge.OpenDataSource Name:= _
  9.         "E:\WIN\Desktop\Trôn Thu Mail Merge\db1.mdb", ConfirmConversions:=False, _
  10.         ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
  11.         PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
  12.         WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
  13.         Connection:= _
  14.         "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=E:\WIN\Desktop\Trôn Thu Mail Merge\db1.mdb;Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type" _
  15.         , SQLStatement:="SELECT * FROM `Table1`", SQLStatement1:="", SubType:= _
  16.         wdMergeSubTypeAccess
  17.     ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField _
  18.         , Text:="""Ho_Ten"""
  19.     Selection.MoveDown Unit:=wdLine, Count:=1
  20.     ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField _
  21.         , Text:="""Dia_chi"""
  22.     With ActiveDocument.MailMerge
  23.         .Destination = wdSendToPrinter
  24.         .SuppressBlankLines = True
  25.         With .DataSource
  26.             .FirstRecord = wdDefaultFirstRecord
  27.             .LastRecord = wdDefaultLastRecord
  28.         End With
  29.         .Execute Pause:=False
  30.     End With
  31. End Sub
Attachments
Copy of Trôn Thu Mail Merge.rar
(14.08 KiB) Downloaded 663 times
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

moitinhdau
Thành viên chính thức
Thành viên chính thức
Posts: 15
Joined: Sat 28/05/2011 11:59 am
Has thanked: 1 time
Been thanked: 1 time

Re: Các bài viết VB ứng dụng MS Word

Postby moitinhdau » Sat 28/05/2011 12:26 pm

cháu có bài tập như thế này mong chú chỉ giúp:
Chạy VB để mở File word : phần này cháu làm được rồi.
Tìm kiếm nội dung:
NĂM ĐIỀU BÁC HỒ DẠY
1. Yêu Tổ quốc, yêu đồng bào
2. Học tập tốt, lao động tốt
3. Đoàn kết tốt, kỷ luật tốt
4. Giữ gìn vệ sinh thật tốt,
5. Khiêm tốn, thật thà, dũng cảm.
Hồ Chí Minh
Sau khi chương trình đọc hết NĂM ĐIỀU BÁC HỒ DẠY thì sẽ xuống dòng 1. Yêu Tổ quốc, yêu đồng bào. Vì dòng này có số 1 đứng trước nên nó sẽ bỏ qua đến dấu enter tiếp theo (không đọc nữa). Cứ thế đến dòng Hồ Chí Minh thì đọc tiếp.

moitinhdau
Thành viên chính thức
Thành viên chính thức
Posts: 15
Joined: Sat 28/05/2011 11:59 am
Has thanked: 1 time
Been thanked: 1 time

Re: Các bài viết VB ứng dụng MS Word

Postby moitinhdau » Thu 02/06/2011 9:50 am

có anh nào giúp em chút không?

User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Re: Các bài viết VB ứng dụng MS Word

Postby truongphu » Tue 06/09/2011 5:16 pm

Đọc một số truyện kiếm hiệp kiểu mới của Tàu cũng vui, tiếc rằng các bản dịch chuẩn không cung cấp đủ (đọc một thời gian sạch truyện); do đó, các bản dịch thô (VietPhrase [VP]) cũng được dùng tới...
Ai đã đọc các bản VP nầy, nếu quen đọc và mê truyện thì không nói làm gì, chỉ kẹt cho những người mới bắt đầu tiếp xúc nó, câu văn tiếng Việt cứ lủng ca lủng củng.
Mời các bạn đọc thử một đoạn văn VP:
Trên đại lục tối cao thượng chức nghiệp chính là thần chức nhân viên, trừ thần chức nhân viên bên ngoài, các quốc gia trung còn có vài loại giỏi hơn bình thường người lao động phía trên chức nghiệp, này vài loại chức nghiệp phân biệt hình thành đều tự công hội, trở thành trên đại lục vài cổ đặc thù tồn tại thế lực.


Chả còn lại cái gì trong đầu!

Trong đoạn văn trên, vì máy dịch sát nên cấu trúc ngôn từ là của tàu: tính từ - danh từ; trong khi tiếng Việt là danh từ - tính từ
vd:
(Tàu) tối cao chức nghiệp, (Việt) chức nghiệp tối cao
(Tàu) thần chức nhân viên, (Việt) nhân viên thần chức
(Tàu) các quốc gia trung, (Việt) trong các quốc gia
(Tàu) bình thường người lao động, (Việt) người lao động bình thường
(Tàu) phía trên chức nghiệp, (Việt) chức nghiệp phía trên
(Tàu) tồn tại thế lực, (Việt) thế lực tồn tại

Để bản dịch VP được 'suông sẽ mượt mà' hơn, theo trên, ta cần đảo lộn vùng chọn (đoạn văn).

Macro sau chạy trên MS Word 2003, tôi chọn đoạn 4 từ vì dễ gặp nhất.
Khai báo Macro nhớ kèm shortcut keyboard để thao tác nhanh
Bôi đen vùng chọn (trên word), nhấn nút (shortcut), sẽ tìm và thay thế trong toàn bộ văn bản

Bạn thử đọc lại đoạn văn trên được Macro:
Trên đại lục chức nghiệp đứng tối cao chính là nhân viên thần chức, trừ nhân viên thần chức bên ngoài, trong các quốc gia còn có vài loại chức nghiệp phía trên giỏi hơn người lao động bình thường, vài loại chức nghiệp phân biệt này hình thành đều có Công hội, trở thành vài cổ thế lực đặc thù tồn tại trên đại lục.

Và Macro đây:

[vb]Sub Macro3() 'Ðao nguoc vùng chon (4 tù' a b c d -> c d a b)
' Tìm và thay thê' nhu trên
' phím tát: Ctrl + x
' Macro3 Macro
' Macro recorded 9/6/2011 by Truong Phu
'
' 1- Ðao nguoc
Set aaa = Word.Selection
Dim bb() As String
bb = Split(Trim(aaa.Text), " ")

' 2- Tìm và thay thê'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = aaa.Text
' Ðao nguoc
.Replacement.Text = bb(2) & " " & bb(3) & " " & bb(0) & " " & bb(1)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.Replacement.Font.Color = wdColorBlack ' thay màu Ðen
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub[/vb]
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh


Return to “[VB] Mẹo vặt khác”

Who is online

Users browsing this forum: No registered users and 0 guests