• 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
Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » T.Năm 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

Mã: Chọn hết

  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

Mã: Chọn hết

  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
Sửa lần cuối bởi truongphu vào ngày T.Sáu 26/12/2008 2:01 pm với 1 lần sửa.


o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » T.Năm 25/12/2008 3:34 pm

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

Mã: Chọn hết

  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.  
Sửa lần cuối bởi truongphu vào ngày T.Sáu 26/12/2008 2:03 pm với 1 lần sửa.
o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » T.Năm 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.


Mã: Chọn hết

  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"
Sửa lần cuối bởi truongphu vào ngày T.Sáu 26/12/2008 2:05 pm với 2 lần sửa.
o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Tạo một Table trong Word

Gửi bàigửi bởi truongphu » T.Sáu 26/12/2008 11:18 am

4- Tạo một Table trong Word

Mã: Chọn hết

  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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » T.Sáu 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

Mã: Chọn hết

  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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Ghi tiếp vào file Word

Gửi bàigửi bởi truongphu » T.Sáu 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

Mã: Chọn hết

  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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Mở file word với FileDialog

Gửi bàigửi bởi truongphu » T.Sáu 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:

Mã: Chọn hết

  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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Ghi ở đầu file

Gửi bàigửi bởi truongphu » T.Sáu 26/12/2008 6:08 pm

7- Ghi ở đầu file

Mã: Chọn hết

  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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » T.Bảy 27/12/2008 10:32 am

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

Mã: Chọn hết

  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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Cách chọn text trong Word

Gửi bàigửi bởi truongphu » CN 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

Mã: Chọn hết

  1. ActiveDocument.Tables(1).Select


* Chọn Field, vd field 1

Mã: Chọn hết

  1. ActiveDocument.Fields(1).Select


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

Mã: Chọn hết

  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:

Mã: Chọn hết

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

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Chỉnh sửa Text trong Word

Gửi bàigửi bởi truongphu » CN 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ỏ

Mã: Chọn hết

  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

Mã: Chọn hết

  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:

Mã: Chọn hết

  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

Mã: Chọn hết

  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

Mã: Chọn hết

  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 "

Mã: Chọn hết

  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

Mã: Chọn hết

  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

Hình đại diện của người dùng
truongphu1
Thành viên chính thức
Thành viên chính thức
Bài viết: 17
Ngày tham gia: CN 28/12/2008 7:38 pm
Been thanked: 1 time

Tìm text và chọn

Gửi bàigửi bởi truongphu1 » CN 28/12/2008 8:00 pm

11- Tìm text và chọn

Mã: Chọn hết

  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:

Mã: Chọn hết

  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

Mã: Chọn hết

  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

Mã: Chọn hết

  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

Mã: Chọn hết

  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

Hình đại diện của người dùng
truongphu1
Thành viên chính thức
Thành viên chính thức
Bài viết: 17
Ngày tham gia: CN 28/12/2008 7:38 pm
Been thanked: 1 time

Chọn Text (tiếp)

Gửi bàigửi bởi truongphu1 » T.Ba 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)

Mã: Chọn hết

  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)

Mã: Chọn hết

  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)

Mã: Chọn hết

  1. Selection.Words(1).Copy

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

Mã: Chọn hết

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

(Viết hoa chữ đầu)

Mã: Chọn hết

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

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

Mã: Chọn hết

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

(định dạng 2 space)

Mã: Chọn hết

  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)

Mã: Chọn hết

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

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

Mã: Chọn hết

  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)

Mã: Chọn hết

  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
Bài viết: 118
Ngày tham gia: T.Ba 17/08/2010 4:09 pm

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

Gửi bàigửi bởi ongdiamap » T.Ba 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.

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » T.Năm 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
Bài viết: 118
Ngày tham gia: T.Ba 17/08/2010 4:09 pm

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

Gửi bàigửi bởi ongdiamap » T.Hai 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.

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » T.Hai 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
Tập tin đính kèm
Copy of Trôn Thu Mail Merge.rar
(14.08 KiB) Đã tải 575 lần
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
Bài viết: 15
Ngày tham gia: T.Bảy 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

Gửi bàigửi bởi moitinhdau » T.Bảy 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
Bài viết: 15
Ngày tham gia: T.Bảy 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

Gửi bàigửi bởi moitinhdau » T.Năm 02/06/2011 9:50 am

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » T.Ba 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


Quay về “[VB] Mẹo vặt khác”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách