COM Eccezione (codice 0x800A03EC) generata quando a livello di codice cambia le interruzioni di pagina in VB.Net
-
26-09-2019 - |
Domanda
Sto tentando di usare il VB.Net Excel interoperabilità COM per modificare a livello di codice la posizione della prima interruzione di pagina orizzontale su un foglio di calcolo di Excel generato dal programma. Il codice per farlo è la seguente:
Dim range As Excel.Range
xlActualWS.Activate()
xlActualWS.PageSetup.PrintArea = "$A$1:$K$68"
range = xlActualWS.Range("A68", "A68")
xlActualWS.HPageBreaks(1).Location = range
System.Runtime.InteropServices.Marshal.ReleaseComObject(range)
Sulle HPageBreaks impostazione linea, codice di eccezione COM 0x800A03EC è gettato, e non riesco davvero a trovare una cosa relativa a questo ricerca. Qualcuno ha idea di cosa mi manca qui?
Soluzione
In base onthe codice sembra che sia la posizione del l'interruzione di pagina non può essere impostata o che ci sono 0 interruzioni di pagina e, quindi, si sta accedendo un indice non valido. Un modo rapido per testare il tutto è quello di fare il seguente
- Controllare la proprietà Count on
xlActualWS.HPageBreaks
e vedere quanti sono disponibili - Rimuovere il set della proprietà Location e vedere se l'errore scompare
Inoltre probabilmente si dovrebbe rimuovere la chiamata ReleaseComObject
. Questo è un API molto difficile ottenere corretto e il CLR è abbastanza bravo a ripulire i riferimenti a oggetti COM su di essa la propria.