Lỗi "variable not defined" trong vba

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

meobeo456

Thành viên mới
Tham gia
11/5/20
Bài viết
7
Được thích
1
Xin chào mọi người, em là lính mới trong lập trình vba. Em copi đoạn code vào mà chạy toàn báo lỗi variable not defined , em tìm mãi mà ko rõ sai chỗ nào, mong mọi người chỉ giúp em với
Sub Xuatfile() Dim i As Long, j As Long Dim template As Object Dim t As Object i = 1 With CreateObject("word.application") .Visible = True Set template = .documents.Open("C:\temp\hopdong_temp.docx") Set t = template.Content t.Find.Execute _ FindText:="abc", _ ReplaceWith:="def", _ Replace:=wdReplaceAll template.SaveAs Filename:=ThisWorkbook.Path & Application.PathSeparator & i & "-giay_moi.docx" .Quit End With Set t = Nothing Set template = Nothing End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Đính kèm file nào bạn ơi. Chứ nhìn thế này biết test ở đâu
 
Xin chào mọi người, em là lính mới trong lập trình vba. Em copi đoạn code vào mà chạy toàn báo lỗi variable not defined , em tìm mãi mà ko rõ sai chỗ nào, mong mọi người chỉ giúp em với
Sub Xuatfile() Dim i As Long, j As Long Dim template As Object Dim t As Object i = 1 With CreateObject("word.application") .Visible = True Set template = .documents.Open("C:\temp\hopdong_temp.docx") Set t = template.Content t.Find.Execute _ FindText:="abc", _ ReplaceWith:="def", _ Replace:=wdReplaceAll template.SaveAs Filename:=ThisWorkbook.Path & Application.PathSeparator & i & "-giay_moi.docx" .Quit End With Set t = Nothing Set template = Nothing End Sub
Sửa wdReplaceAll thành số 2, cụ thể chổ.
Mã:
Replace:=wdReplaceAll
Thành
Mã:
Replace:=2
 
đây ạ em sửa bài đính kèm file phía trên
Bài đã được tự động gộp:

Sửa wdReplaceAll thành số 2, cụ thể chổ.
Mã:
Replace:=wdReplaceAll
Thành
Mã:
Replace:=2
sao sửa chỗ đó thành 2 lại được vậy anh nhỉ, em chưa hiểu lắm
 
Nó nằm ở chổ này nè.
...
Thay hằng sô bằng "magic numbers" chỉ là phản ứng tạm, nởi nó làm cho code khó hiểu và khó copy/paste.

Khi tréo applicatis như vậy thì người ta có hai giải pháp chính:

1. Dùng reference và kết nối sớm. Tuy nhiên cách này hơi bất lợi là cóp qua nới khác thì lại ohair bảo đảm có refeences.

2. Nếu kết nối trễ như bài này thì người ta đặt thêm cái enum
Enum MyWDEnums
wdReplaceNone = 0
wdReplaceOne = 1
wdReplaceAll = 2
End Enums

Vè sau này, muố copy code Word ở đâu cũng có thể chỉ cần thêm cái tiền tố MyWDEnums
Ví dụ như bài này thì sửa
Replace:=wdReplaceAll thành Replace:=MyWDEnums.wdReplaceAll
 
Web KT

Bài viết mới nhất

Back
Top Bottom