/ / Przetłumaczenie wywołania VBA na język C # w instalatorze dodatku Excel - c #, excel, vba, install, add-in

Tłumaczenie wywołania VBA na C # w instalatorze dodatku Excel - c #, excel, vba, install, add-in

Mój dodatek Excel jest napisany w języku C #, ale instalator wywołuje program Excel za pomocą makra VBA. Chcę się pozbyć VBA.

Zastanawiam się, co robi poniższy VBA do rejestru. Z tego, co widzę, dodaje wartość w HKCUSoftwareMicrosoftOffice14.0ExcelOptions. Czy to to?

Dim MyXLL As AddIn
Set MyXLL = Application.AddIns.Add(addinFile)
If (Not MyXLL Is Nothing) Then
MyXLL.Installed = True
Else
MsgBox "Failed to add XLL"
End If

Odpowiedzi:

2 dla odpowiedzi № 1

Powinieneś spróbować użyć programu excel interop z c #, zamiast modyfikować rejestr bezpośrednio, co może doprowadzić do koszmaru (poważnie). Również musiałbyś radzić sobie z różnymi wersjami biura itp.

Dodawanie dodatku przez współdziałanie:

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.addins.add(v=office.11).aspx

Instalowanie dodatku po dodaniu:

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.addin.installed(v=office.11).aspx


0 dla odpowiedzi nr 2

Używanie metody Addins z VBA lub automatyzacji / interop jest prawdopodobnie najłatwiejszą metodą, ale utrudnia obsługę sytuacji więcej niż jednej wersji programu Excel zainstalowanej na komputerze.
Bardziej kompleksowe rozwiązanie wymaga instalacjipisanie skryptów klawiszy OPENn (gdzie n jest o 1 większy od najwyższego bieżącego klucza OPENn) dla każdej wersji programu Excel, którą chcesz zainstalować, i odwrócenie tych akcji w skrypcie deinstalacji (trzeba by również przepisać inne klucze OPENn, które są wyższe niż OPENn klucz twojego XLL).
Możesz znaleźć przykładowy skrypt, używając LUA dla Setup Factory tutaj http://www.jkp-ads.com/articles/AddinsAndSetupFactory.asp