Condividi tramite


Risoluzione dei problemi in Visual Studio in fase di progettazione

Aggiornamento: novembre 2007

Di seguito sono elencati i problemi che potrebbero verificarsi durante lo sviluppo di soluzioni tramite Visual Studio Tools per Office.

Errore in seguito al salvataggio e all'esecuzione di una soluzione

In Visual Studio, le soluzioni vengono archiviate in una cartella temporanea fino a quando non vengono salvate. Visual Studio Tools per Office modifica automaticamente i criteri di sicurezza per concedere attendibilità alla soluzione nel percorso temporaneo. Tali modifiche vengono apportate durante la generazione della soluzione. Se non viene modificata prima del salvataggio in una cartella permanente, la soluzione non verrà generata quando verrà eseguita dal nuovo percorso. La soluzione non sarà quindi automaticamente considerata attendibile nel nuovo percorso e non verrà eseguita.

Se si verifica un errore dopo aver salvato una nuova soluzione in un percorso permanente, scegliere Rigenera soluzione dal menu Genera. In tal modo, in Visual Studio la soluzione verrà compilata anche se non sono state apportate modifiche. Visual Studio Tools per Office apporterà quindi le modifiche appropriate ai criteri di sicurezza per il nuovo percorso.

Impossibilità di compilare un progetto a livello di documento basato su un documento con autorizzazioni limitate

Visual Studio Tools per Office non è in grado di compilare progetti a livello di documento se il documento presenta autorizzazioni limitate. La compilazione dei progetti che contengono un documento con autorizzazioni limitate avrà esito negativo e nella finestra Elenco errori verrà visualizzato il messaggio seguente:

Impossibile aggiungere la personalizzazione.

Se si desidera includere un documento con autorizzazioni limitate, utilizzare un documento senza restrizioni durante le lo sviluppo e la compilazione della soluzione. Quindi, dopo aver pubblicato la soluzione, applicare le autorizzazioni limitate al documento nel percorso di pubblicazione.

Mancata generazione di alcuni eventi quando si utilizza il linguaggio C#

Gli oggetti Office che includono un metodo e un evento con lo stesso nome sono stati divisi in due oggetti negli assembly di interoperabilità primari di Office. Questi due oggetti sono costituiti da un oggetto centrale con tutte le proprietà e i metodi e un oggetto evento che contiene gli eventi, i cui nomi sono in conflitto con una proprietà o un metodo. Gli oggetti evento utilizzano la convenzione di denominazione <nomeoggetto>_Event. Se l'evento previsto non viene generato, eseguire il cast dell'interfaccia <nomeoggetto>_Event.

Si supponga ad esempio di disporre di un evento ActivateEvent e un metodo Activate per una Workbook. Per gestire l'evento, utilizzare WorkbookEvents_Event, anziché la Workbook.

Creare variabili membro nella sezione delle dichiarazioni:

private Excel.Workbook wkbk;
private Excel.WorkbookEvents_Event wbEvents;
private Excel.WorkbookEvents_ActivateEventHandler activateEvent;

Collegare l'evento in _Startup:

wbEvents = (Excel.WorkbookEvents_Event)wkbk;
activateEvent = new Excel.WorkbookEvents_ActivateEventHandler(ThisWorkbook_Activate);
wbEvents.Activate += activateEvent;

Creare un gestore eventi:

private void ThisWorkbook_Activate()
{
    // Your code goes here.
} 

È necessario eseguire il cast a WorkbookEvents_Event affinché Excel.Workbook.Activate restituisca il metodo Activate e non l'evento ActivateEvent.

In alternativa, è possibile eseguire il cast dell'oggetto all'interfaccia dell'evento corrispondente in Startup:

((Excel.WorkbookEvents_Event)(Globals.ThisWorkbook.InnerObject)).Activate += 
    new Excel.WorkbookEvents_ActivateEventHandler(ThisWorkbook_Activate); 

Creare quindi un gestore eventi per il proprio codice:

private void ThisWorkbook_Activate()
{
    // Your code goes here.
} 

Mancato riconoscimento dei riferimenti alle classi di Office

Alcuni nomi di classi, ad esempio Application, sono inclusi in più spazi dei nomi, ad esempio Microsoft.Office.Interop.Word e System.Windows.Forms. Per questo motivo, l'istruzione Imports/using all'inizio dei modelli di progetto include una costante di qualificazione in forma abbreviata, ad esempio:

Imports Word = Microsoft.Office.Interop.Word
using Word = Microsoft.Office.Interop.Word;

Questo utilizzo dell'istruzione Imports/using richiede la differenziazione dei riferimenti alle classi di Office con il qualificatore di Word o Excel, ad esempio:

Dim doc As Word.Document
Word.Document doc;

Se si utilizza una dichiarazione senza qualificatore, verranno generati errori. Ad esempio:

Dim doc As Document  ' Class is ambiguous
Document doc;  // Class is ambiguous

Nonostante l'importazione dello spazio dei nomi di Word o Excel e la possibilità di accedere a tutte le classi in esso contenute, per rimuovere ogni ambiguità relativa allo spazio dei nomi è necessario qualificare tutti i tipi con Word o Excel.

Perdita delle proprietà dei controlli quando si crea un nuovo progetto sulla base di un documento proveniente da un progetto esistente

Se si crea un nuovo progetto di Visual Studio Tools per Office sulla base di un documento derivante da un progetto esistente, le proprietà dei controlli che sono presenti nel documento non verranno copiate nel nuovo progetto. È quindi necessario reimpostare manualmente le proprietà per tutti i controlli preesistenti. In alternativa, è possibile conservare le proprietà dei controlli creando una copia del progetto esistente anziché crearne uno completamente nuovo oppure caricando il progetto esistente nella nuova soluzione (nella finestra di progettazione), quindi copiando e incollando nel nuovo documento i controlli del documento preesistente.

Controlli visualizzati come rettangoli neri nel documento o nel foglio di lavoro

Se si raggruppano più controlli in un documento o in un foglio di lavoro, questi controlli non vengono più riconosciuti da Visual Studio Tools per Office. I controlli raggruppati non sono accessibili dalla finestra Proprietà e vengono visualizzati come rettangoli neri nel documento o nel foglio di lavoro. Per ripristinarne la funzionalità, è necessario separare i controlli.

Controlli di un modello di Word non visibili in Visual Studio

Se si apre un modello di Word nella finestra di progettazione di Visual Studio, i controlli del modello che non sono in linea con il testo potrebbero non essere visibili. Ciò si verifica in quanto in Visual Studio i modelli di Word vengono aperti nella visualizzazione Normale. Per visualizzare i controlli, fare clic sul menu Visualizza, selezionare la visualizzazione di Microsoft Office Word e quindi fare clic su Layout di stampa.

Errata visualizzazione nella cache dei nomi dei DataSet di Visual Basic memorizzati nella cache

I nomi degli oggetti DataSet creati utilizzando Visual Basic che sono contrassegnati come Cached e WithEvents (inclusi gli oggetti DataSet trascinati dalla finestra Origini dati oppure la Casella degli strumenti la cui proprietà CacheInDocument è impostata su True) sono preceduti da un trattino di sottolineatura nella cache. Se ad esempio si crea un DataSet denominato Customers, il nome dell'oggetto CachedDataItem sarà _Customers nella cache. Se si utilizza ServerDocument per accedere a questo elemento memorizzato nella cache, è necessario specificare _Customers invece di Customers.

Errori del compilatore in presenza di progetti Microsoft Office 2003 denominati Excel o Word

Nei progetti Office Excel e Word costituiscono parole chiave riservate.

Errori del compilatore in seguito all'eliminazione di un controllo NamedRange

Se si elimina un controllo NamedRange da un foglio di lavoro che non è il foglio di lavoro attivo nella finestra di progettazione, il codice generato automaticamente potrebbe non essere rimosso dal progetto e potrebbero verificarsi errori del compilatore. Per assicurarsi che il codice venga rimosso, selezionare sempre il foglio di lavoro contenente il controllo NamedRange in modo da impostarlo come foglio di lavoro attivo prima di eliminare il controllo. Se il codice generato automaticamente non viene eliminato quando si rimuove il controllo, è possibile eliminarlo mediante la finestra di progettazione attivando il foglio di lavoro e apportandovi una modifica in modo che il foglio venga contrassegnato come modificato. La rigenerazione del progetto comporterà la rimozione del codice.

Mancato funzionamento di un percorso HTTP dell'assembly

Questo comportamento può essere determinato da due cause principali.

  • Con la Creazione guidata progetto Visual Studio Tools per Office non vengono modificati i criteri di protezione per gli assembly creati in percorsi HTTP. È necessario concedere manualmente l'attendibilità totale all'assembly. Per ulteriori informazioni, vedere Procedura: concedere autorizzazioni a cartelle e assembly (System 2003).

  • Per impostazione predefinita, ASP.NET disattiva il download di file DLL. Per supportare il download di assembly nel computer dell'utente, l'amministratore del server Web deve modificare le proprietà di Internet Information Services (IIS) in modo da consentire il download di DLL dalla directory in cui è archiviato l'assembly. Per ulteriori informazioni, vedere la Guida in linea di Internet Information Services (IIS) disponibile sul server Web all'indirizzo https://localhost/iisHelp/.

    Per verificare se il problema è stato determinato da questa causa, è possibile controllare le richieste negate per la DLL nel log del server Web. Se la causa risulta essere diversa, impostare il debugger per interrompere l'esecuzione in corrispondenza di tutte le eccezioni e controllare i messaggi di errore.

Mancata modifica automatica dei criteri di protezione in caso di progetti creati in percorsi di rete UNC

Con la Creazione guidata progetto Visual Studio Tools per Office i criteri di protezione vengono modificati a livello di utente. Se si crea un progetto in un percorso di rete UNC, per poter eseguire l'assembly è innanzitutto necessario modificare i criteri di protezione a livello di computer in modo da concedere l'attendibilità totale. Le modifiche ai criteri a livello di computer devono essere apportate manualmente. Per ulteriori informazioni, vedere Procedura: concedere autorizzazioni a cartelle e assembly (System 2003).

Mancata generazione dell'evento DocumentChange all'apertura del documento

L'evento DocumentChange viene generato in occasione della modifica del documento attivo, nonché, di frequente, all'apertura di un documento. Poiché tuttavia un documento può essere aperto in Word in numerosi modi, ad esempio da una riga di comando, da Esplora risorse o dal menu File di Word, è possibile che l'evento DocumentChange non venga sempre generato all'apertura del documento. Dovrebbe essere sempre generato quando il documento attivo viene modificato dopo l'apertura. Per eseguire operazioni all'apertura del documento, utilizzare l'evento Startup.

Errori nell'interruzione dei thread dopo il debug

Visual Studio Tools per Office è conforme a una convenzione di denominazione dei thread che consente al debugger di chiudere il programma nel modo corretto. Al nome dei thread creati nella soluzione è necessario assegnare al nome di ciascun thread il prefisso VSTA_ per consentirne la corretta gestione quando si interrompe il debug. È possibile, ad esempio, impostare la proprietà Name di un thread che attende un evento di rete su VSTA_NetworkListener.

Gli eventi di Excel in Internet Explorer vengono generati diversamente rispetto ad Excel

Gli eventi di una cartella di lavoro ospitata in Internet Explorer vengono generati secondo un ordine diverso rispetto a quando la cartella viene aperta in Excel. Alcuni degli eventi vengono inoltre generati due volte. Se la soluzione include Internet Explorer, verificare l'impatto della diversa sequenza di eventi sul funzionamento della soluzione.

Mancata generazione dell'evento New quando si crea un documento da un modello

Quando si utilizza un prompt dei comandi per aprire un modello di Word e creare un nuovo documento, è necessario utilizzare l'opzione /z per generare l'evento New. Non includere uno spazio dopo /z. In caso contrario, si otterrà l'apertura del modello per la modifica in Word anziché la creazione di un nuovo documento basato sul modello. Ad esempio: winword.exe /z"mytemplate.dot"

Si ottiene così un risultato analogo a quello garantito dall'utilizzo dell'opzione /t, con l'aggiunta della generazione dell'evento New da parte dell'opzione /z.

Mancata generazione dell'evento Open all'apertura di un foglio di lavoro XML

Se un progetto Excel viene basato su un foglio di lavoro esistente non nativo, ad esempio nel formato XML di Excel, l'evento Open non verrà generato all'apertura del foglio di lavoro.

Esecuzione del metodo BeforeClose nonostante la cartella di lavoro venga mantenuta aperta

L'utente finale può annullare l'operazione di chiusura di una cartella di lavoro e continuare a utilizzare la soluzione dopo la chiamata del gestore eventi BeforeClose. Questa situazione può verificarsi quando l'utente apporta delle modifiche in un foglio di lavoro e quindi esegue un'operazione per chiudere la cartella di lavoro senza salvare. Viene chiamato il gestore eventi BeforeClose e all'utente viene quindi visualizzata una finestra di dialogo che consente di annullare l'operazione di chiusura.

Se nel gestore eventi BeforeClose viene inserito del codice per la chiusura delle connessioni a database o l'esecuzione di altre operazioni di pulitura, è possibile che tale codice venga chiamato mentre l'utente sta ancora utilizzando la soluzione.

Nessun effetto del comando Inserisci ClipArt nella finestra di progettazione di Visual Studio

Quando Word o Excel è aperto nella finestra di progettazione di Visual Studio, la scelta del comando ClipArt dall'opzione Immagine del menu Inserisci non determina l'apertura del riquadro attività ClipArt. Per aggiungere una ClipArt utilizzando i comandi di menu, è necessario aprire la copia della cartella di lavoro o del documento presente nella cartella principale del progetto (non la copia della cartella \bin) all'esterno di Visual Studio, aggiungere la ClipArt, quindi salvare la cartella di lavoro o il documento.

Impossibile creare un progetto a livello di documento anche se Office 2003 è installato

Questo problema può verificarsi se si disinstalla Microsoft Office System 2007 e quindi si installa Office 2003. Il seguente messaggio di errore potrebbe essere restituito quando si crea progetto di personalizzazione a livello di documento di Office 2003:

"Nel computer non è installata una versione compatibile di Microsoft Office."

Per risolvere il problema:

  1. Chiudere Visual Studio.

  2. Aprire l'applicazione Microsoft Office adatta e quindi chiudere l'applicazione. Ad esempio, per creare un progetto di cartella di lavoro di Excel 2003, aprire e chiudere Excel 2003.

  3. Avviare Visual Studio e creare il progetto.

Le cartelle di lavoro di Excel diventano disattivate quando viene aperto un progetto di personalizzazione a livello di documento per Excel in Visual Studio

Quando si apre Excel 2007 e si crea un progetto di personalizzazione a livello di documento per Excel 2007 in Visual Studio, la cartella di lavoro aperta prima non risponde più.

Per risolvere questo problema, fare clic sul foglio di lavoro visibile nella finestra di progettazione di Visual Studio. La cartella di lavoro aperta prima riprende a rispondere.

Vedere anche

Attività

Procedura: distribuire soluzioni per l'utilizzo non in linea di documenti (System 2003)

Risoluzione dei problemi in Office in fase di esecuzione

Concetti

Distribuzione protetta (System 2003)

Attività comuni nella programmazione con Office

Altre risorse

Risoluzione dei problemi relativi alle soluzioni Office