Dela via


Felsöka problem i Office-lösningar

Gäller för: Visual Studio

Den här artikeln beskriver hur du felsöker problem som kan uppstå när du utför olika uppgifter när du utvecklar Office-lösningar i Visual Studio。

Problem när du skapar, uppgraderar och öppnar projekt

Du kan stöta på följande problem när du skapar eller öppnar Office-projekt.

Problem 1: Det går inte att skapa projektet

Om ett fel uppstår när du försöker skapa eller öppna ett Office-projekt, men Visual Studio inte har tillräckligt med information för att fastställa orsaken, kan du försöka stänga projektet, avsluta Visual Studio och starta igen.

Om du försöker skapa ett projekt på dokumentnivå är det möjligt att ett annat dokument med samma namn som dokumentet i det nya projektet redan är öppet i Excel eller Word. Kontrollera att alla andra instanser av Excel eller Word är stängda.

Problem 2: Kontrollegenskaper går förlorade när du skapar ett nytt projekt baserat på ett dokument från ett befintligt projekt

Om du skapar ett nytt Office-projekt baserat på ett dokument från ett befintligt projekt kopieras inte egenskaperna för alla kontroller som finns i dokumentet till det nya projektet. Återställ egenskaperna för befintliga kontroller manuellt. Du kan också bevara kontrollegenskaperna genom att skapa en kopia av det befintliga projektet i stället för att skapa ett nytt projekt, eller genom att läsa in det befintliga projektet i den nya lösningen (i designern) och kopiera och klistra in kontrollerna från det befintliga dokumentet till det nya dokumentet.

Problem 3: Fel när du skapar ett Excel-arbetsboksprojekt baserat på en befintlig arbetsbok

Om du skapar ett nytt Excel-arbetsboksprojekt baserat på en befintlig arbetsbok kan du se en kombination av följande fel.

  • Från Excel: "Sekretessvarning: Det här dokumentet innehåller makron, ActiveX-kontroller, XML-tilläggsinformation eller webbkomponenter. Dessa kan innehålla personlig information som inte kan tas bort av dokumentkontrollanten."
  • Från Visual Studio: "Designer kunde inte läsas in korrekt."

De här felen kan uppstå när du försöker skapa ett projekt som baseras på en arbetsbok där dess personliga information har tagits bort med hjälp av dokumentkontrollen. Undvik problemet genom att utföra följande steg innan du skapar projektet:

  1. Öppna arbetsboken i Excel.
  2. Öppna Säkerhetscenter i Excel.
  3. På fliken Sekretessalternativ avmarkerar du kryssrutan Ta bort personlig information från filegenskaper vid sparande .
  4. Spara arbetsboken och stäng Excel.

Problem 4: Det går inte att öppna ett projekt efter migreringen

När en Office-lösning har migrerats till Microsoft Office 2010 kan projektet inte öppnas på en utvecklingsdator med endast 2007 Microsoft Office-systemet installerat. Du kan se följande fel.

  • "Ett eller flera projekt i lösningen lästes inte in korrekt. Mer information finns i utdatafönstret."
  • "Det går inte att skapa projektet eftersom programmet som är associerat med den här projekttypen inte är installerat på den här datorn. Du måste installera Microsoft Office-programmet som är associerat med den här projekttypen."

Lös problemet genom att redigera . vbproj - eller .csproj-filen . Ersätt med HostPackage="{6CE98B71-D55A-4305-87A8-0D6E368D9600}"för ett Word projektHostPackage="{763FDC83-64E5-4651-AC9B-28C4FEB985A1}". För ett Excel-projekt ersätter du HostPackage="{B284B16A-C42C-4438-BDCD-B72F4AC43CFB}" med HostPackage="{825100CF-0BA7-47EA-A084-DCF3308DAF74}". För ett Outlook-projekt ersätter du HostPackage="{D2B20FF5-A6E5-47E1-90E8-463C6860CB05}" med HostPackage="{20A848B8-E01F-4801-962E-25DB0FF57389}".

Alternativt kan du se till att migrerade projekt endast öppnas på utvecklingsdatorer med Microsoft Office 2010 redan installerat.

Problem 5: Fel i uppgraderade Office 2003-projekt på dokumentnivå som innehåller Windows Forms kontroller

Om du uppgraderar ett microsoft Office 2003-projekt på dokumentnivå och dokumentet innehåller Windows Forms kontroller kan det uppgraderade projektet ha kompilerings- eller körningsfel. Undvik det här problemet genom att installera Visual Studio 2005 Tools for Office Second Edition Runtime på utvecklingsdatorn innan du uppgraderar projektet. Den här versionen av körningen är tillgänglig som ett omdistribuerbart paket från Microsoft Download Center i Microsoft Visual Studio 2005 Tools for Office Second Edition Runtime (VSTO 2005 SE) (x86).

När du har uppgraderat projektet kan du avinstallera Visual Studio 2005 Tools for Office Second Edition Runtime från utvecklingsdatorn om den inte används av andra Office-lösningar.

Problem när du använder designers

Du kan stöta på följande problem när du arbetar med dokument-, arbetsboks- eller kalkylbladsdesignern i projekt på dokumentnivå.

Problem 1: Designer kunde inte läsas in korrekt

Visual Studio kan inte öppna designern i följande fall:

  • Excel eller Word är redan öppet och visar en modal dialogruta. Om du vill öppna designern kontrollerar du om Excel eller Word har en alternativ dialogruta öppen och stänger eventuella öppna modala dialogrutor. Om inga modala dialogrutor är öppna kan det krävas någon annan åtgärd innan Excel eller Word svarar.
  • Projektet håller för närvarande på att felsökas. Om du vill öppna designern stoppar eller slutför du felsökningen.
  • Ett VSTO-tillägg i Excel som är installerat på utvecklingsdatorn visar en dialogruta när Excel startar. Om du vill skapa ett projekt på Excel-dokumentnivå måste du först inaktivera VSTO-tillägget.

Problem 2: Kontroller visas som svarta rektanglar i dokumentet eller kalkylbladet

Om du grupperar kontroller i ett dokument eller kalkylblad känner Visual Studio inte längre igen kontrollerna. Grupperade kontroller kan inte nås i fönstret Egenskaper och de visas som svarta rektanglar i dokumentet eller kalkylbladet. Du måste dela upp kontrollerna för att återställa deras funktioner.

Problem 3: Kontroller på en Word mall visas inte i Visual Studio

Om du öppnar en Word mall i Visual Studio-designern kanske kontroller på mallen som inte är i linje med text inte visas. Det beror på att Visual Studio öppnas Word mallar i normalvyn. Om du vill visa kontrollerna väljer du menyn Visa, pekar på Microsoft Office Word View och väljer sedan Utskriftslayout.

Problem 4: Infoga ClipArt-kommandot gör ingenting i Visual Studio-designern

När Excel eller Word är öppet i Visual Studio-designern öppnas inte åtgärdsfönstret ClipArt när du klickar på Knappen ClipArt på fliken Illustrationer i menyfliksområdet. Om du vill lägga till ClipArt måste du öppna kopian av arbetsboken eller dokumentet som finns i huvudprojektmappen (inte kopian som finns i mappen \bin ) utanför Visual Studio, lägga till ClipArt och sedan spara arbetsboken eller dokumentet.

Problem när du skriver kod

Du kan stöta på följande problem när du skriver kod i Office-projekt.

Problem 1: Vissa händelser i Office-objekt är inte tillgängliga när du använder C#

I vissa fall kan du se ett kompilatorfel som följande när du försöker komma åt en viss händelse av en instans av en Office-typ av primär interop-sammansättning (PIA) i ett Visual C#-projekt.

Tvetydighet mellan "Microsoft.Office.Interop.Excel._Application.NewWorkbook" och "Microsoft.Office.Interop.Excel.AppEvents_Event.NewWorkbook"

Det här felet innebär att du försöker komma åt en händelse som har samma namn som en annan egenskap eller metod för objektet. För att få åtkomst till händelsen måste du omvandla objektet till dess händelsegränssnitt.

Office PIA-typer som har händelser implementerar två gränssnitt: ett kärngränssnitt med alla egenskaper och metoder samt ett händelsegränssnitt som innehåller de händelser som exponeras av objektet. Dessa händelsegränssnitt använder namngivningskonventionen _<objectname>Events<n>Event, till exempel AppEvents_Event och ApplicationEvents2_Event. Om du inte kan komma åt en händelse som du förväntar dig att hitta på ett objekt, omvandlar du objektet till dess händelsegränssnitt.

Objekt har till exempel Application en NewWorkbook händelse och en NewWorkbook egenskap. För att hantera NewWorkbook händelsen gjuter du Application till AppEvents_Event gränssnittet. Följande kodexempel visar hur du gör detta i ett projekt på dokumentnivå för Excel.

private void ThisWorkbook_Startup(object sender, System.EventArgs e)
{
    ((Excel.AppEvents_Event)this.Application).NewWorkbook += 
        new Excel.AppEvents_NewWorkbookEventHandler(ThisWorkbook_NewWorkbook);
}

void ThisWorkbook_NewWorkbook(Excel.Workbook Wb)
{
    // Perform some work here.
}

Mer information om händelsegränssnitt i Office PIA finns i Översikt över klasser och gränssnitt i office primära interop-sammansättningar.

Problem 2: Det går inte att referera till Office PIA-klasser i projekt som är inriktade på .NET Framework 4 eller .NET Framework 4.5

I projekt som är inriktade på .NET Framework 4 eller .NET Framework 4.5 kompileras inte kod som refererar till en klass som definieras i en Office PIA som standard. Klasser i PIA:erna använder namngivningskonventionens< objektnamnklass>, till exempel DocumentClass och WorkbookClass. Följande kod från ett Word VSTO-tilläggsprojekt kompileras till exempel inte.

Word.DocumentClass document = (Word.DocumentClass) Globals.ThisAddIn.Application.ActiveDocument;

Den här koden resulterar i följande kompileringsfel:

  • Visual Basic: "Referens till klassen 'DocumentClass' tillåts inte när dess sammansättning är länkad med no-PIA-läge."
  • Visual C#: "Interop type 'Microsoft.Office.Interop. Word. DocumentClass' kan inte bäddas in. Använd det tillämpliga gränssnittet i stället."

Lös det här felet genom att ändra koden så att den refererar till motsvarande gränssnitt i stället. I stället för att referera till ett DocumentClass objekt refererar du till en instans av Document gränssnittet i stället.

Word.Document document = Globals.ThisAddIn.Application.ActiveDocument;

Projekt som är inriktade på .NET Framework 4 eller .NET Framework 4.5 bäddar automatiskt in alla interop-typer från Office PIA:erna som standard. Det här kompileringsfelet beror på att funktionen för inbäddade interop-typer endast fungerar med gränssnitt, inte klasser. Mer information om gränssnitt och klasser i Office PIA finns i Översikt över klasser och gränssnitt i office primära interop-sammansättningar. Mer information om funktionen för inbäddade interoptyper i Office-projekt finns i Designa och skapa Office-lösningar.

Problem 3: Referenser till Office-klasser känns inte igen

Vissa klassnamn, till exempel Program, finns i flera namnområden som Microsoft.Office.Interop.Word och System.Windows.Forms. Därför innehåller instruktionen Importer/med hjälp av överst i projektmallarna en tillfällig kvalificerande konstant, till exempel:

using Word = Microsoft.Office.Interop.Word;

Den här användningen av instruktionen Importer/med hjälp av kräver att du särskiljer referenser till Office-klasser med Word eller Excel-kvalificerare, till exempel:

Word.Document doc;

Du får fel om du använder en okvalificerad deklaration, till exempel:

Document doc;  // Class is ambiguous

Även om du har importerat Word- eller Excel-namnområdet och har åtkomst till alla klasser i det, måste du fullständigt kvalificera alla typer med Word eller Excel för att ta bort tvetydighet i namnområdet.

Problem när du skapar projekt

Du kan stöta på följande problem när du skapar Office-projekt.

Problem 1: Det går inte att skapa ett projekt på dokumentnivå som baseras på ett dokument med begränsade behörigheter

Visual Studio kan inte skapa projekt på dokumentnivå om dokumentet har begränsade behörigheter. Om projektet innehåller ett dokument som har begränsade behörigheter kompileras inte projektet och du får följande meddelande i fönstret Fellista .

Det gick inte att lägga till anpassningen.

Om du vill inkludera ett dokument som har begränsade behörigheter använder du ett obegränsat dokument medan du utvecklar och skapar lösningen. Tillämpa sedan de begränsade behörigheterna på dokumentet på publiceringsplatsen när du har publicerat lösningen.

Problem 2: Kompilatorfel uppstår efter att en NamedRange-kontroll har tagits bort

Om du tar bort en NamedRange kontroll från ett kalkylblad som inte är det aktiva kalkylbladet i designern kanske den automatiskt genererade koden inte tas bort från projektet och kompilatorfel kan uppstå. För att se till att koden tas bort bör du alltid markera kalkylbladet som innehåller NamedRange kontrollen för att göra det till det aktiva kalkylbladet innan du tar bort kontrollen. Om automatiskt genererad kod inte tas bort när du tar bort kontrollen kan du få designern att ta bort koden genom att aktivera kalkylbladet och göra en ändring så att kalkylbladet markeras som ändrat. När du återskapar projektet tas koden bort.

Problem när du felsöker projekt

Du kan stöta på följande problem när du felsöker Office-projekt.

Problem 1: Uppmaningen att avinstallera visas när du publicerar och installerar en lösning på utvecklingsdatorn

När du felsöker en Office-lösning kan följande fel visas.

Anpassningen kan inte installeras eftersom en annan version är installerad och inte kan uppgraderas från den här platsen.

Det här felet anger att du tidigare har publicerat och installerat Office-lösningen på utvecklingsdatorn. Om du vill förhindra att meddelandet visas avinstallerar du lösningen från listan över installerade program på datorn innan du felsöker lösningen. Du kan också skapa ett annat användarkonto på utvecklingsdatorn för att testa installationen av den publicerade lösningen.

Problem 2: Projekt på dokumentnivå som skapats på UNC-nätverksplatser körs inte från Visual Studio

Om du skapar ett projekt på dokumentnivå för Excel eller Word på en UNC-nätverksplats måste du lägga till dokumentets plats i listan över betrodda platser i Excel eller Word. Annars läses anpassningen inte in när du försöker köra eller felsöka projektet i Visual Studio. Mer information om betrodda platser finns i Bevilja förtroende för dokument.

Problem 3: Trådar stoppas inte korrekt efter felsökning

Office-projekt i Visual Studio följer en namngivningskonvention för trådar som gör att felsökaren kan stänga programmet korrekt. Om du skapar trådar i din lösning bör du namnge varje tråd med prefixet VSTA_ för att säkerställa att dessa trådar hanteras korrekt när du slutar felsöka. Du kan till exempel ange Name egenskapen för en tråd som väntar på att en nätverkshändelse ska VSTA_NetworkListener.

Problem 4: Det går inte att köra eller felsöka någon Office-lösning på utvecklingsdatorn

Om du inte kan köra eller utveckla ett Office-projekt på utvecklingsdatorn kan följande felmeddelande visas.

Det gick inte att läsa in anpassningen eftersom det inte gick att skapa programdomänen.

Visual Studio använder Fusion, den .NET Framework sammansättningsinläsaren, för att cachelagrar sammansättningarna innan office-lösningar läses in. Kontrollera att Visual Studio kan skriva till Fusion-cachen och försök igen. Mer information finns i Skuggkopiesammansättningar.

Problem 5: Fel vid stopp av felsökningsprogrammet i ett projekt på dokumentnivå när du har använt Redigera och Fortsätt

Om du använder Redigera och Fortsätt för att göra ändringar i kod i ett projekt på dokumentnivå för Excel eller Word medan projektet är i avbrottsläge kan du se en dialogruta med följande felmeddelande om du sedan stoppar felsökningsprogrammet.

Att avsluta processen i dess aktuella tillstånd kan orsaka oönskade resultat, inklusive förlust av data och systeminstabilitet.

Oavsett om du väljer Ja eller Nej i dialogrutan avslutar Visual Studio Excel- eller Word processen och stoppar felsökningsprogrammet. Om du vill sluta felsöka projektet utan att visa den här dialogrutan avslutar du Excel eller Word direkt i stället för att stoppa felsökningsprogrammet i Visual Studio.

Referenser