Giúp Sửa Lỗi Activex Component Can't Create Object Khi Load Form
Có thể bạn quan tâm
- Trang chủ Có gì mới Hoạt động gần nhất Tác giả
- Diễn đàn Tìm bài viết mới Tìm theo chuyên mục
- Video Video về Excel Video về tin học khác Tin tức về tin học chung
- Thông tin mới Tìm bài mới Tài Nguyên Mới Hoạt động gần nhất
- Tài nguyên Đánh giá mới nhất Tìm tài nguyên
- Đóng góp
Tìm kiếm
Mọi nơi Đề tài Diễn đàn này Đề tài này Chỉ tìm trong tiêu đề Tìm kiếm Tìm nâng cao…- Tìm bài viết mới
- Tìm theo chuyên mục
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
- Khách ơi! GPE thông tin đến bạn ấn phẩm "lập trình VBA trong Excel": - Phần cơ bản - Phần Nâng Cao - VBA trong Excel - Cải thiện và tăng tốc
- Trang chủ
- Diễn đàn
- Lập Trình với Excel
- Lập Trình với Excel
- Thread starter Cao Mạnh Sơn
- Ngày gửi 11/6/12
Cao Mạnh Sơn
Tôi đồng ý
Tham gia 26/11/07 Bài viết 568 Được thích 586 Tôi có 1 file sử dụng Form. Theo chương trình khi mở File lên sẽ tự động load Form, từ Form sẽ vào chương trình bảng tính bằng nút lệnh VÀO BẢNG TÍNH và kết thúc chương trình bằng nút THOÁT CHƯƠNG TRÌNH. Bây giờ tôi đang bị lỗi như sau: nếu thoát chương trình bằng lệnh đóng file của Excel(Dấu x góc phải của bảng tính) thì khi mở lại bảng tính hoàn toàn không có lỗi gì. Ngược lại nếu tôi thoát chương trình bằng nút lệnh trên Form thì khi mở lại bảng tính sẽ xuất hiện lỗi: activex component can't create object. Tôi không cho rằng code viết bị lỗi mà cho rằng máy tính của tôi đang thiếu một Control nào đó, tôi gửi ảnh minh họa và file lỗi nhờ mọi người giúp giải quyết lỗi. Xin cám ơnFile đính kèm
- New folder.rar 233.1 KB · Đọc: 105
Cao Mạnh Sơn
Tôi đồng ý
Tham gia 26/11/07 Bài viết 568 Được thích 586 Mong các cao thủ VBA sớm giải quyết giúp vấn đề. Upvote 0Nguyễn Duy Tuân
Nghị Hách
Thành viên danh dự Tham gia 13/6/06 Bài viết 4,745 Được thích 10,251 Giới tính Nam Nghề nghiệp Giáo viên, CEO tại Bluesoftscao mạnh sơn đã viết: Tôi có 1 file sử dụng Form. Theo chương trình khi mở File lên sẽ tự động load Form, từ Form sẽ vào chương trình bảng tính bằng nút lệnh VÀO BẢNG TÍNH và kết thúc chương trình bằng nút THOÁT CHƯƠNG TRÌNH. Bây giờ tôi đang bị lỗi như sau: nếu thoát chương trình bằng lệnh đóng file của Excel(Dấu x góc phải của bảng tính) thì khi mở lại bảng tính hoàn toàn không có lỗi gì. Ngược lại nếu tôi thoát chương trình bằng nút lệnh trên Form thì khi mở lại bảng tính sẽ xuất hiện lỗi: activex component can't create object. Tôi không cho rằng code viết bị lỗi mà cho rằng máy tính của tôi đang thiếu một Control nào đó, tôi gửi ảnh minh họa và file lỗi nhờ mọi người giúp giải quyết lỗi. Xin cám ơn Nhấp chuột vào đây để mở rộng...Code cũ Mã:Sao chép. Private Sub QuitAndSave_Click() Sheets("InTemThung").Select Cells.Select Selection.Delete Sheets("Menu").Select ThisWorkbook.Close SaveChanges:=True Application.WindowState = xlMaximized End Sub Anh cần sửa lại là Mã:Sao chép. Private Sub QuitAndSave_Click() ThisWorkbook.Close SaveChanges:=True Application.WindowState = xlMaximized [COLOR="#FF0000"]Unload Me[/COLOR] 'Giải phóng form & bộ nhớ End Sub Các code xóa vì nó đã chạy trong sự kiện ThisWorkbook.BeforeSave(). Khi đóng form anh phải chạy lệnh "Unload Me" để giải phóng bộ nhớ và đóng form thực sự. Trong file Excel của anh không có dùng controls nào lạ cả nên chạy máy nào cũng được. Upvote 0
Cao Mạnh Sơn
Tôi đồng ý
Tham gia 26/11/07 Bài viết 568 Được thích 586Nguyễn Duy Tuân đã viết: Các code xóa vì nó đã chạy trong sự kiện ThisWorkbook.BeforeSave(). Khi đóng form anh phải chạy lệnh "Unload Me" để giải phóng bộ nhớ và đóng form thực sự. Nhấp chuột vào đây để mở rộng...Tuân à, nếu bỏ các lệnh xóa đi thì khi đóng Form nó không xóa mặc dù đã có lệnh trong sự kiện trước khi Save. Trên máy của anh vẫn không hết lỗi như anh đã nêu: activex component can't create object. Upvote 0
Nguyễn Duy Tuân
Nghị Hách
Thành viên danh dự Tham gia 13/6/06 Bài viết 4,745 Được thích 10,251 Giới tính Nam Nghề nghiệp Giáo viên, CEO tại Bluesofts Thuốc đặc trị cho anh đây: Code cũ Mã:Sao chép. Private Sub UserForm_Activate() On Error Resume Next If Application.WindowState = xlMinimized Then DonmauDonco.Enabled = False DonmauDonco2.Enabled = False DonmauDaco.Enabled = False DamauDaco.Enabled = False Assort.Enabled = False GhepTam.Enabled = False Else DonmauDonco.Enabled = True DonmauDonco2.Enabled = True DonmauDaco.Enabled = True DamauDaco.Enabled = True Assort.Enabled = True GhepTam.Enabled = True End If Dunglai = False Me.Caption = "SONDONG GAMENT JOINT STOCK COMPANY - SONDONG.,JSC - " ChuChay = Me.CompanyName [COLOR="#008000"]Thuchien: PauseTime = 0.2 Start = Timer Do While Timer < Start + PauseTime DoEvents Loop L = Len(CompanyName.Caption) CompanyName.Caption = Right(CompanyName.Caption, L - 1) + Left(CompanyName.Caption, 1) If Dunglai = False Then GoTo Thuchien[/COLOR] End Sub Lỗi là ở lệnh lặp từ đoạn Thuchien:, trong suốt quá trình chạy form nó không thoát khỏi vòng lặp này được và một số sự kiện của đối tượng máy tính không nhận được đúng. Anh sử dụng vòng lặp này cốt để chạy một thủ tục chạy chữ mà thôi. Giải pháp là thay thế bằng hàm Windows API SetTimer() tốt hơn và chạy độc lập với form, nó định kỳ (theo mili giây) chạy một thủ tục. Code trong form sửa lại và thêm như sau: + Trong sự kiện Activate(): Xóa từ dòng Thuchien: và thêm lệnh StartTimer - Khởi hoạt chế độ chạy Timer + Thêm sự kiện Terminate() và gán lệnh StopTimer - Ngưng chế độ chạy Timer Mã:Sao chép. Private Sub UserForm_Activate() On Error Resume Next If Application.WindowState = xlMinimized Then DonmauDonco.Enabled = False DonmauDonco2.Enabled = False DonmauDaco.Enabled = False DamauDaco.Enabled = False Assort.Enabled = False GhepTam.Enabled = False Else DonmauDonco.Enabled = True DonmauDonco2.Enabled = True DonmauDaco.Enabled = True DamauDaco.Enabled = True Assort.Enabled = True GhepTam.Enabled = True End If Dunglai = False Me.Caption = "SONDONG GAMENT JOINT STOCK COMPANY - SONDONG.,JSC - " ChuChay = Me.CompanyName [COLOR="#FF0000"]StartTimer[/COLOR] End Sub Private Sub UserForm_Terminate() [COLOR="#FF0000"]StopTimer[/COLOR] End Sub Tạo một Module tên là modTimer chứa code của các hàm và thủ tục StartTimer, StopTimer, TimeProc - Thủ tục chạy chữ Mã:Sao chép. Option Explicit Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long Const nIDEvent = 9999 [COLOR="#008000"]'Tuy chon, so > 0[/COLOR] Sub StartTimer() StopTimer SetTimer Application.hwnd, nIDEvent, 100, AddressOf TimeProc [COLOR="#008000"]'100 -- Tốc độ chạy chữ = mili giây[/COLOR] End Sub Sub StopTimer() KillTimer Application.hwnd, nIDEvent End Sub [COLOR="#008000"]'Thủ tục chạy chữ[/COLOR] Function TimeProc(ByVal H As Long, ByVal nMSG As Long, ByVal nID As Long, ByVal nTsys As Long) On Error Resume Next If Not frmMain Is Nothing Then Dim L As Long L = Len(frmMain.CompanyName.Caption) frmMain.CompanyName.Caption = Right(frmMain.CompanyName.Caption, L - 1) + Left(frmMain.CompanyName.Caption, 1) End If End Function Kỹ thuật chạy Timer trong VBA nên thay thế bởi hàm API SetTimer chứ không nên dùng Application.OnTime() hay Do While .. Loop. Về chữ chạy anh có thể tham khảo code em viết ở bài Tặng các bạn ScrollText - Cuộn chữ: lên, xuống, trái phải,... File của anh em đã sửa và gửi đính kèm theo bài này, anh kiểm tra xem ok chưa.File đính kèm
- Check_tuan.rar 132.9 KB · Đọc: 62
Cao Mạnh Sơn
Tôi đồng ý
Tham gia 26/11/07 Bài viết 568 Được thích 586 Được rồi Tuân à. Cám ơn nhiều. Vậy mà anh cứ cho rằng tại máy tính của anh thiếu control nào đó, anh loay hoay mãi không được. Upvote 0ndu96081631
Huyền thoại GPE
Thành viên BQT Super Moderator Tham gia 5/6/08 Bài viết 30,703 Được thích 53,950Nguyễn Duy Tuân đã viết: Kỹ thuật chạy Timer trong VBA nên thay thế bởi hàm API SetTimer chứ không nên dùng Application.OnTime() hay Do While .. Loop. Về chữ chạy anh có thể tham khảo code em viết ở bài Tặng các bạn ScrollText - Cuộn chữ: lên, xuống, trái phải,... File của anh em đã sửa và gửi đính kèm theo bài này, anh kiểm tra xem ok chưa. Nhấp chuột vào đây để mở rộng...Nếu dùng SetTimer, tôi thường thấy nó đi cặp với 1 hàm TimeProc(các tham số) Sẵn tiên cho tôi hỏi tí: - Hàm TimeProc thường có 1 lô tham số đi kèm, nó dùng để làm gì vậy? - Do không hiểu mấy tham số này nên tôi thường bỏ luôn ---> Vì thật ra có để nguyên mấy tham số ấy thì tôi cũng đâu thấy chung tham gia gì vào quá trình tính toán đâu Upvote 0
Nguyễn Duy Tuân
Nghị Hách
Thành viên danh dự Tham gia 13/6/06 Bài viết 4,745 Được thích 10,251 Giới tính Nam Nghề nghiệp Giáo viên, CEO tại Bluesoftsndu96081631 đã viết: Nếu dùng SetTimer, tôi thường thấy nó đi cặp với 1 hàm TimeProc(các tham số) Sẵn tiên cho tôi hỏi tí: - Hàm TimeProc thường có 1 lô tham số đi kèm, nó dùng để làm gì vậy? - Do không hiểu mấy tham số này nên tôi thường bỏ luôn ---> Vì thật ra có để nguyên mấy tham số ấy thì tôi cũng đâu thấy chung tham gia gì vào quá trình tính toán đâu Nhấp chuột vào đây để mở rộng...Để giải thích các tham số của TimerProc sẽ bắt đầu từ việc gọi SetTimer Mã:Sao chép. Const nIDEvent = 9999 SetTimer(Application.hwnd, nIDEvent, 100, AddressOf TimeProc) Hàm SetTimer để thiết lập chế độ gọi thông điệp WM_TIMER trong thủ tục Windows (nguyên lý hoạt động chương trình trong Windows là duyệt các thông điệp (Message) trong một vòng lặp, hàm để bắt thông điệp này thường có tên WndProc() nó được cài vào Handle của chương trình. Application.hwnd chính là Handle của Microsoft Excel đang chạy). Nếu không gán TimeProc trong SetTimer thì hàm WndProc sẽ gửi thông điệp WM_TIMER để chúng ta xử lý. Trong việc gọi trên, SetTimer luôn trả về giá trị là ID của lần gọi SetTimer, và nó chính bằng nIDEvent. Trong một hoàn cảnh nào đó chúng ta có thể gọi hai hay nhiều lần SetTimer với cùng thủ tục có tên TimeProc Mã:Sao chép. SetTimer(ExcelHwnd, nIDEventExcel, 100, AddressOf TimeProc) SetTimer(WordHwnd, nIDEventWord, 100, AddressOf TimeProc) Trong trường hợp này thủ tục TimeProc được gọi trên hai thread (hiểu như là chạy trên hai luồng). Một cái theo Winword - WordHwnd và cái kia theo Excel - ExcelHwnd với 2 ID là nIDEventWord, nIDEventExcel (có thể đặt hằng số cho các ID với giá trị là 9999, 9998). Cấu trúc của thủ tục TimeProc như sau: Mã:Sao chép. Sub TimeProc(ByVal hwnd As Long, ByVal nMSG As Long, ByVal idEvent As Long, ByVal dwTime As Long) [COLOR="#008000"] 'On Error Resume Next[/COLOR] End Sub + hwnd: là Handle của ứng dụng mà được gọi trong hàm SetTimer, nếu TimeProc chạy trên luồng Winword thì giá trị của nó chính là WordHwnd, nếu Excel thì là ExcelHwnd. Trong ví dụ bài trước thì nó chính là Application.hwnd. Trong lập trình API biết được giá trị Handle sẽ là đầu mối để làm mọi việc xử lý tới ứng dụng chứa Handle đó. + nMSG: là thông điệp/Message mà Windows gửi đến, nó chính là WM_TIMER với giá trị 275. + idEvent: là ID của thủ tục TimeProc, nó được nạp khi gọi hàm SetTimer, nếu TimeProc chạy trên luồng Winword thì giá trị của nó chính là nIDEventWord, nếu Excel thì là nIDEventExcel. Trong ví dụ bài trước thì nó chính là 9999. Biết được giá trị ID ta biết là TimerProc đang chạy trên luồng nào. + dwTime: trả về số mili giây kể từ lúc hệ thống được khởi động. Giá trị này trùng với giá trị trả về bởi hàm GetTickCount. (*) Trong ví dụ ở bài trước hay ở đâu đó chúng ta nhầm hay gọi hàm function TimeProc nhưng cách gọi này là sai dẫn đến giá trị các tham số trong TimerProc trả về không đúng, đúng phải là Sub TimeProc. Việc giải thích cách thức hoạt động của mấy hàm API này có vẻ trừu tượng, không dễ ngấm. Vậy hiểu nôm na thế này. Ngôn ngữ tin học là: Mã:Sao chép. SetTimer(ExcelHwnd, nIDEventExcel, 100, AddressOf TimeProc) SetTimer(WordHwnd, nIDEventWord, 100, AddressOf TimeProc) Công việc ngoài đời là: Mã:Sao chép. SetTimer(Lào, Số hộ chiếu ở Lào, thời gian nhắc việc, đ/c ndu96081631) SetTimer(Campuchia, Số hộ chiếu ở Campuchia, thời gian nhắc việc, đ/c ndu96081631) Như vậy cùng một người là ndu96081631 nhưng phải làm việc ở ở hai nơi Lào và Campuchia. Máy tính có khả năng nhân bản ndu96081631 thành hai, cùng một thời điểm có mặt và làm việc cả hai quốc gia Lào và Campuchia. đ/c ndu96081631 chỉ biết mình đang ở đâu khi nhìn vào idEvent. Lần chỉnh sửa cuối: 12/6/12 Upvote 0
ptm0412
Bad Excel Member
Thành viên BQT Administrator Tham gia 4/11/07 Bài viết 14,445 Được thích 37,107 Donate (Momo) Giới tính Nam Nghề nghiệp Consultant Tôi xóa mọi bài tranh luận không liên quan đến chủ đề. Chủ topic cũng đã thỏa mãn, nên tôi khóa chủ đề này, Ai muốn tranh luận bên ngoài chủ đề, thì mở topic khác. Gởi siwtom, Tôi biết bạn có lưu lại các bài viết ở đây, nếu bạn muốn tranh luận thì mở topic khác, dán bản sao lưu vào hay không tùy bạn. Lần chỉnh sửa cuối: 13/6/12 Upvote 0 Status Không mở trả lời sau này.Bài viết mới nhất
T Cách gán ảnh cố định vào ô trong excel- todesgott
- 29/3/10
- Định dạng, trình bày, in ấn bảng tính
- nghiemcongdien
- 9/11/24
- Google Spreadsheets
- heocondethuong1235
- Hôm qua, lúc 13:45
- Những vấn đề chung
- Question
- ongke0711
- 6/10/24
- Lập Trình với Excel
- jusend
- Thứ tư lúc 16:43
- Giải thích, gỡ rối, xử lý lỗi công thức
- Question
- DMQ
- Thứ tư lúc 21:16
- Lập Trình với Excel
- Lan Ny
- Hôm qua, lúc 11:55
- Hàm và công thức Excel
- linhxinhthat
- Thứ tư lúc 15:52
- Hàm và công thức Excel
- Nguyễn Duy Tuân
- Hôm qua, lúc 09:21
- BLUESOFTS: A-Excel, A-Tools
- Question
- binhtv69
- 22/11/24
- Lập Trình với Excel
- luuviettrung
- Hôm qua, lúc 16:31
- Hỏi đáp những vấn đề khác
- Hoale85
- Hôm qua, lúc 11:16
- Những vấn đề chung
- acrox84
- Thứ tư lúc 11:03
- Làm việc với ngày tháng và thời gian
- Ks.longvandinh1988
- Hôm qua, lúc 14:17
- Excel và Kế Toán
- GPE-Trợ Lý
- Hôm qua, lúc 10:07
- Học tập Online
- Ngocminh19
- Thứ tư lúc 18:56
- Hàm và công thức Excel
- Question
- MinhKhai
- 20/8/13
- Lập Trình với Excel
- Question
- tienhuy832011
- Thứ ba lúc 20:07
- Lập Trình với Excel
- Question
- Toanke063
- 22/11/24
- Lập Trình với Excel
- Nguyễn Hậu LK
- Thứ tư lúc 16:18
- Hỏi đáp những vấn đề khác
Thành viên có số lượng bài viết cao nhất tháng
- Hoàng Tuấn 868 152
- ptm0412 81
- VetMini 47
- HUONGHCKT 42
- ongke0711 42
- hoangtuaotrang_hp_vn 35
- SA_DQ 34
- befaint 33
- Tuấn Bụng Bự 31
- bebo021999 31
- BuiQuangThuan 28
- HeSanbi 25
- huuthang_bd 25
- HieuCD 18
- DeTong 17
- huhumalu 17
- CHAOQUAY 16
- Nguyễn Diêu Hiền 15
- batista911 13
- Duy Tùng 9x 13
Thành viên có điểm tương tác cao nhất tháng
- Hoàng Tuấn 868 131
- ptm0412 79
- HUONGHCKT 77
- VetMini 64
- HeSanbi 63
- ongke0711 58
- HieuCD 44
- SA_DQ 44
- BuiQuangThuan 42
- befaint 41
- huuthang_bd 39
- GPE-Trợ Lý 34
- hoangtuaotrang_hp_vn 32
- bebo021999 30
- Phuocam 19
- DeTong 16
- huhumalu 15
- PhanTuHuong 13
- phuongnam366377 12
- CHAOQUAY 12
- Trang chủ
- Diễn đàn
- Lập Trình với Excel
- Lập Trình với Excel
- Website này sử dụng cookies. Tiếp tục sử dụng trang này, đồng nghĩa với việc bạn chấp nhận website sử dụng cookies. Chấp nhận Tìm hiểu thêm.…
Từ khóa » Khắc Phục Lỗi Activex Component Can't Create Object
-
Cách Sửa Lỗi "Runtime Error 429: ActiveX Component Can't Create ...
-
Hướng Dẫn Xử Lý Lỗi ActiveX Component Can't Create Object
-
Lỗi Activex Component Can't Create Object? - Tạo Website
-
Lỗi 429 - ActiveX Component Can't Create Object (Excel 2010, Excel ...
-
Bạn Nhận được Lỗi Thời Gian Chạy 429 Khi Bạn Tự động Hóa Các ứng ...
-
Không Tạo được ActiveX Trong Access
-
Error ActiveX Component Can't Create Object - YouTube
-
Xử Lý Lỗi '429' Trong Visual Basic - Lập Trình Viên Quốc Tế FPT Aptech
-
Lỗi Thời Gian Chạy 429, Thành Phần ActiveX Không Thể Tạo đối Tượng
-
How To Fix Run Time Error - 429 || ActiveX Component Can't Create ...
-
Cách Sửa Lỗi UltraViewer Hay Gặp Khi Kết Nối Máy Tính Từ Xa
-
Cách Sửa Lỗi UltraViewer Hay Gặp Khi Kết Nối Máy Tính Từ Xa - Nextcom
-
Khắc Phục Lỗi “Run-time Error '429' ” Khi Nạp Cơ Sở Dữ Liệu
-
Lỗi Thời Gian Chạy 429, Thành Phần ActiveX ... - 101 Help | Latest Post