nguyenvantu29
Thành viên mới
- Tham gia
- 1/6/21
- Bài viết
- 44
- Được thích
- 2
Nhìnb cho mình hỏi lỗi này là như nào vậy b nhỉ, (mình tải về mở lên , nhấn xuất file thì lỗi. View attachment 272546
Hàm Nz() là hàm mặc định có sẳn của Ms Access, nó biến giá trị Null thành Zero. Trong Excel không có hàm này nên sẽ báo lỗi.b cho mình hỏi lỗi này là như nào vậy b nhỉ, (mình tải về mở lên , nhấn xuất file thì lỗi.
Cái này là mình ở file Access của b lên luôn mà, (VBA của access)Hàm Nz() là hàm mặc định có sẳn của Ms Access, nó biến giá trị Null thành Zero. Trong Excel không có hàm này nên sẽ báo lỗi.
Nếu bạn mở trong Access mà báo lỗi thì bạn phải chụp hình hoặc ghi nội dung cái thông báo lỗi + dòng báo lỗi thì mới định bệnh được nhé.
Nếu vậy thì lỗi có thể liên quan đến thư viện của Ms Access. Nz() là hàm thuộc Access Aplication, không phải hàm của VBA.Cái này là mình ở file Access của b lên luôn mà, (VBA của access)
View attachment 272562
Do tò mò nên tôi thử như sau. Trước hết tôi kiểm tra không có Missing. Có hàm Nz.Nếu vậy thì lỗi có thể liên quan đến thư viện của Ms Access. Nz() là hàm thuộc Access Aplication, không phải hàm của VBA.
- Bạn vô màn hình code, Tool - Reference - kiểm tra xem có thư viện nào "Missing:..." không, chọn thư viện "Microsoft Access xx.0 Object Library" theo đúng phiên bản Office của bạn.
- Vô Object Browser (F2) - chọn All libraries - gõ hàm Nz vào ô tìm kiếm, nếu không ra kết quả gì thì bạn cài lại (hoặc repair) Office.
- Nếu có cài 2 phiên bản Office 32 và 64 bit chung thì nên gỡ bỏ 1 cái đi.
Do tò mò nên tôi thử như sau. Trước hết tôi kiểm tra không có Missing. Có hàm Nz.
Tôi chọn trong ComboBox "Tiệm Tạp hoá Cô Hoa", sau đó nhấn nút "Xuất sang MS Word". Sẽ có lỗi ở dòng
.FormFields("TongTien").Result = Nz(Me.txtTongTien)
Do ở txtTongTien co giá trị 33885280 nên tôi thay dòng trên bằng
.FormFields("TongTien").Result = 33885280 ' Nz(Me.txtTongTien)
Vẫn có lỗi tương tự.
Tức lỗi không thể đổ tội cho Nz. Tôi lại thay bằng
.FormFields("TongTien").Result = 1
Không thấy báo lỗi, mà chỉ báo "Da xuat sang MS Word hoan tat"
Bài #26 tôi đã test cho Windows 10 64 + Office 2013 32
Vấn đề nằm bên Word, có thể nhập vào google "Method 'Result' of object FormField failed" và đọcCảm ơn bác đã test. Cái lỗi này lạ quá, tôi chưa gặp phải bao giờ - "Command Failed" và cũng chưa biết cách khắc phục.
Vấn đề nằm bên Word, có thể nhập vào google "Method 'Result' of object FormField failed" và đọc
Nếu không dùng Result:
.FormFields("TongTien").Range.Text = Nz(Me.txtTongTien")
hoặc
.FormFields("TongTien").Range.Text = 33885280
thì không có lỗi nữa.
.FormFields("TongTien").Range.Text = Format(Nz(Me.txtTongTien"),"#,##0")
Ở bài cuối tôi không thử trong Access mà mở tập tin BG.docx và chạy code ngay trong nó.Vậy là có sự khác biệt khi dùng các thuộc tính cho Controls (FormFields("xxx")) trên Word. Trong file mẫu Access có 2 dạng tham số được truyền qua Control trong Word, 1 cách thì hoạt động 1 cách thì báo lỗi mặc dù dùng cùng 1 phương thức "Result".
- Các FormFields đầu thì được truyền dữ liệu từ việc tổng hợp Recordset.
- FormFields("TongTien") thì được truyền tham số từ Textbox trên Form. --> báo lỗi đối với cách truyền dữ liệu này.
Nếu dùng: .Range.Text thì phải thêm hàm định dạng tham số vì nó không tự định djang theo cách đã thiết lập sẳn trong Word.
Mã:.FormFields("TongTien").Range.Text = Format(Nz(Me.txtTongTien"),"#,##0")
Sub tes()
ThisDocument.FormFields("TongTien").Result = 33885280
End Sub
- Các FormFields đầu thì được truyền dữ liệu từ việc tổng hợp Recordset.