COM- och .NET-fel efter migrering av Office-arkitektur

Symptom

När du har migrerat Microsoft Office-arkitekturen från 32-bitars till 64-bitars får du fel om ett COM-program eller en .NET Framework-klient används. Dessa möjliga fel omfattar, men är inte begränsade till, följande:

  • TYPE_E_CANTLOADLIBRARY

  • TYPE_E_LIBNOTREGISTERED

  • TYPE_E_ELEMENTNOTFOUND

Felen uppstår vanligtvis om COM-programmet eller .NET-klienten körs som en 32-bitarsprocess.

Exempel

Dessa fel kan inträffa när följande kod körs i 86-bitars PowerShell:

$xl = New-Object -ComObject Excel.Application

$xl.Visible = $True

Orsak

Felen orsakas av överblivna registerundernycklar som skapas av migreringen.

Åtgärd

Åtgärda problemet genom att använda någon av följande metoder.

Metod 1: Ta bort överblivna undernycklar automatiskt

Om du vill identifiera och ta bort överblivna undernycklar kör du det här skriptet från följande GitHub-plats:

Reparation av Office TypeLib

Metod 2: Ta bort överblivna undernycklar manuellt

Om PowerShell-skriptet från steg 1 inte tar bort de överblivna undernycklarna kan du också söka efter överblivna poster manuellt. Den berörda enheten kan ha överblivna undernycklar som liknar följande exempel:

HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\GUID\1.9\0\Win32

Obs! I det här exemplet GUID är en sträng som är specifik för undernyckeln.

Undernyckeln har ett värde som pekar på en körbar Office-fil som saknas i filsökvägen Programfiler (x86). Till exempel:

C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE

Det bör också finnas en angränsande undernyckel som pekar på rätt plats för 64-bitars programfiler.