Một số người dùng đã báo cáo rằng nếu họ khởi chạy Excel bằng cách bấm đúp vào tệp Excel, trình bổ sung sẽ không tải. Tuy nhiên, nếu họ mở Excel thông qua menu Bắt đầu (hoặc thanh công cụ khởi động nhanh) thì trình bổ sung sẽ tải tốt.COM bổ trợ cho Excel không tải khi Excel được khởi chạy bằng cách mở tệp
Một số chi tiết, trong trường hợp họ giúp:
- Nó là một COM add-in, viết bằng VB6.
- Sự cố đã được báo cáo trên hệ thống Windows XP/Excel 2003 và Vista/Excel 2007.
- Bổ trợ triển khai IDTExtensibility2.
- Chế độ khởi động được đặt thành "Tải khi khởi động".
Bất kỳ suy nghĩ nào về nguyên nhân hoặc cách khắc phục sự cố này sẽ được đánh giá cao.
Cập nhật: Tôi tin rằng tôi đã tìm thấy giải pháp cho vấn đề này.
Khi đăng ký IDTExtensibility2, nó sẽ tự động tạo mục HKCU cho hành vi tải, tên bổ trợ, v.v. Nhưng tôi cũng đã có tệp thiết lập của tôi đăng ký bổ trợ vào HKLM, vì vậy nó sẽ có sẵn để tất cả người dùng trên máy. Điều này gây ra các mục đăng ký kép trên hệ thống.
Tôi không nghĩ rằng đây sẽ là nguyên nhân của sự cố. Tôi tự chỉnh sửa các mục HKCU và Excel dường như bỏ qua chúng và làm theo các mục HKLM. Tuy nhiên, tôi đã nhận được một mẹo từ một nhà phát triển khác giải thích rằng họ có cùng một vấn đề và giải pháp của họ là xóa các mục đăng ký trùng lặp. Tôi đã thử nó và nó dường như đã giải quyết vấn đề cho (rất ít người) đã báo cáo lỗi này.
Mã Inno Setup dưới đây sẽ thêm các mục HKLM, kiểm tra lại hành vi tải là chính xác (vì tôi hoang tưởng), sau đó xóa mục HKCU. Thay thế thuộc tính tệp của bạn bất cứ nơi nào bạn thấy TẤT CẢ CAPS.
[Registry]
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; Flags: uninsdeletekey
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: string; ValueName: FriendlyName; ValueData: ADDIN_NAME
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: string; ValueName: Description; ValueData: ADDIN_DESC
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: dword; ValueName: LoadBehavior; ValueData: 3
Root: HKLM; Subkey: Software\Microsoft\Office\Excel\Addins\CONNECT_CLASS; ValueType: dword; ValueName: CommandLineSafe; ValueData: 0
// Set load behavior to on start up
procedure ResetAddinRegKeys();
var
bUpdate : Boolean;
LoadBehaviorKey : Cardinal;
begin
if RegQueryDWordValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS', 'LoadBehavior', LoadBehaviorKey) then begin
if LoadBehaviorKey <> 3 then begin
bUpdate := True;
end;
end else begin
bUpdate := True;
end;
if bUpdate = True then begin
RegWriteDWordValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS','LoadBehavior', 3);
end;
if RegKeyExists(HKEY_CURRENT_USER, 'SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS') then begin
if RegDeleteKeyIncludingSubkeys(HKEY_CURRENT_USER, 'SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS') then begin;
//MsgBox('Duplicate keys deleted', mbInformation, MB_OK);
end;
end;
end;
function GetCustomSetupExitCode: Integer;
begin
ResetAddinRegKeys;
Result := 0;
end;
Đối với cài đặt MSI của tôi, tôi có cam kết phần của quá trình cài đặt gọi VBScript sau:
Sub RemoveAddinHKCUKeys()
On Error Resume Next
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.RegDelete "HKCU\SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS\CommandLineSafe"
WshShell.RegDelete "HKCU\SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS\Description"
WshShell.RegDelete "HKCU\SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS\FriendlyName"
WshShell.RegDelete "HKCU\SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS\LoadBehavior"
WshShell.RegDelete "HKCU\SOFTWARE\Microsoft\Office\Excel\Addins\CONNECT_CLASS\"
If Err.Number <> 0 The Err.Clear
End Sub
@ Tom: Bạn đã quản lý để tìm ra các vấn đề khi Excel được nhúng vào trong các ứng dụng khác? Tôi đang gặp vấn đề tương tự, nơi add add COM của tôi (thêm thanh điều khiển của riêng nó vào Excel) nhưng lệnh thêm không thể được tùy chỉnh (các nút được bật/tắt) ngoại trừ trong phương thức OnConnection(). – A9S6
Xin lỗi, không. Đây không thực sự là một vấn đề lớn đối với tôi. Tôi đã có thể nói với mọi người "đừng làm thế". ;) Hoặc đóng cả hai ứng dụng và bắt đầu chúng theo đúng thứ tự. Tôi không chắc bạn có thể làm gì. Có vẻ như một lỗi trong ứng dụng Office. –
cảm ơn phản hồi. Bạn đã có một số ý tưởng và nhận xét tuyệt vời. – CtrlDot