[VB2008]COMException unhandled met Array

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Morphogenesis
  • Registratie: Juni 2009
  • Laatst online: 25-06 11:37
Ik ben bezig met een scriptje, dat zorgt dat horzintale velden verticaal worden (A1:Z1 -> A1:A26) en vice versa.
Dit moet uiteindelijk gekopieerd worden naar een nieuwe sheet, zodat ik het verder kan gebruiken.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Imports Microsoft.Office.Interop

Public Class Form1
    Private Sub btnReverse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReverse.Click

        'Declareren
        Dim row As Integer
        Dim col As Integer
        Dim moExcelApp As New Excel.Application()
        Dim oWBoek As Excel.Workbook = moExcelApp.Workbooks.Open("C:\Documents and Settings\Morpho\Desktop\test.xls")
        Dim ws As Excel.Worksheet
        Dim maxRows As Integer
        Dim maxCols As Integer
        Dim mMyrow(0, 0) As Object

        'Worksheet openen
        ws = moExcelApp.Worksheets("Blad1")

        'Aangeven welke velden omgekeerd moeten worden
        maxRows = "16"
        maxCols = "33"

        'Draai cell waarden om -> Hier gaat het fout
        mMyrow(row, col) = ws.Rows.Cells(row, col)


Het gaat fout bij de laatste regel:
code:
1
mMyrow(row, col) = ws.Rows.Cells(row, col)


Ik krijg de foutmelding COMException was unhandled met foutcode: Exception from HRESULT: 0x800A03EC

Hierop heb ik gegoogled, echter kan ik daar vrij weinig mee. Ik vermoed zelf dat het fout gaat met de array, maar dat is, met hier en daar de nodige aanpassing, overgenomen van VBA. (Het was een macro)

Wie ziet wat ik fout doe? Ik doe dit nog niet zo heel lang, dus als iemand zou kunnen meekijken zou ik erg dankbaar zijn :)

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Die HResult kom ik vaak tegen als een cell niet word gevonden.

Stap eens door je code, gebruik het immediate window om te kijken of die fouten worden gegooid.

Heb je ook Option Strict en Option Explicit aanstaan? :)

Je kan in je immidiate window dit intypen:

?ws.Rows.Cells(row, col)

als je breaked op die regel. Dan zie je misschien wat meer.

[ Voor 23% gewijzigd door Snake op 26-05-2010 08:37 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Morphogenesis schreef op woensdag 26 mei 2010 @ 08:25:
Ik ben bezig met een scriptje, dat zorgt dat horzintale velden verticaal worden (A1:Z1 -> A1:A26) en vice versa.
Dit moet uiteindelijk gekopieerd worden naar een nieuwe sheet, zodat ik het verder kan gebruiken.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Imports Microsoft.Office.Interop

Public Class Form1
    Private Sub btnReverse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReverse.Click

        'Declareren
        Dim row As Integer
        Dim col As Integer
        Dim moExcelApp As New Excel.Application()
        Dim oWBoek As Excel.Workbook = moExcelApp.Workbooks.Open("C:\Documents and Settings\Morpho\Desktop\test.xls")
        Dim ws As Excel.Worksheet
        Dim maxRows As Integer
        Dim maxCols As Integer
        Dim mMyrow(0, 0) As Object

        'Worksheet openen
        ws = moExcelApp.Worksheets("Blad1")

        'Aangeven welke velden omgekeerd moeten worden
        maxRows = "16"
        maxCols = "33"

        'Draai cell waarden om -> Hier gaat het fout
        mMyrow(row, col) = ws.Rows.Cells(row, col)


Het gaat fout bij de laatste regel:
code:
1
mMyrow(row, col) = ws.Rows.Cells(row, col)


Ik krijg de foutmelding COMException was unhandled met foutcode: Exception from HRESULT: 0x800A03EC

Hierop heb ik gegoogled, echter kan ik daar vrij weinig mee. Ik vermoed zelf dat het fout gaat met de array, maar dat is, met hier en daar de nodige aanpassing, overgenomen van VBA. (Het was een macro)

Wie ziet wat ik fout doe? Ik doe dit nog niet zo heel lang, dus als iemand zou kunnen meekijken zou ik erg dankbaar zijn :)
Ben ik nou gek, of zijn row en col beide nog leeg? Je declareert ze wel, maar stopt er voor zover ik kan zien vervolgens geen waarde in. Dan is het niet zo raar als Excel de cel niet kan vinden.

Kijk hier eens naar:
Programmatic access to Office VBA project is denied
En hier:
http://stackoverflow.com/...t-microsoft-office-intero

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Dit is een heel andere error :P die gebeurt namelijk als je een macro probeert te injecteren in een Office bestand :)

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Morphogenesis
  • Registratie: Juni 2009
  • Laatst online: 25-06 11:37
L0calh0st schreef op woensdag 26 mei 2010 @ 08:51:
[...]


Ben ik nou gek, of zijn row en col beide nog leeg? Je declareert ze wel, maar stopt er voor zover ik kan zien vervolgens geen waarde in. Dan is het niet zo raar als Excel de cel niet kan vinden.
Verrek, je hebt gelijk. :X :F

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Imports Microsoft.Office.Interop

Public Class Form1
    Private Sub btnReverse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReverse.Click

        'Declareren
        Dim row As Integer
        Dim col As Integer
        Dim moExcelApp As New Excel.Application()
        Dim oWBoek As Excel.Workbook = moExcelApp.Workbooks.Open("C:\Documents and Settings\rindert.kramer\Desktop\test.xls")
        Dim ws As Excel.Worksheet
        Dim maxRows As Integer
        Dim maxCols As Integer
        Dim mMyrow(0, 0) As Object

        'Worksheet openen 
        ws = moExcelApp.Worksheets("Blad1")

        'Aangeven welke velden omgekeerd moeten worden
        maxRows = "16"
        maxCols = "33"

        'col & row defineren
        row = "16"
        col = "33"

        'Pak de cell waarden
        mMyrow(row, col) = ws.Rows.Cells(row, col)

Ik heb er dezelfde waarde in gestopt als bij maxRows en maxCols. Ik weet echter niet of dit juist gedefineerd is..

Ik krijg nu een andere melding: IndexOutofRangeException was unhandled en daaronder: Index was outside the bounds of the array

Kan het zijn dat het met de
code:
1
Dim MmMyrow (0, 0) As Object
te maken heeft?

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Je moet wel nog je array initialiseren he :+

Maar dit kan je toch checken met een debugger? Je werkt met VS.NET. DE BESTE DEBUGGER TER WERELD.

Stap door je code en check je waarden van de variables! Als die Nothing is doe je 99% kans iets fout!

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Morphogenesis schreef op woensdag 26 mei 2010 @ 09:18:
Visual Basic:
1
2
3
4
5
6
7
        'Aangeven welke velden omgekeerd moeten worden
        maxRows = "16"
        maxCols = "33"

        'col & row defineren
        row = "16"
        col = "33"
Doe jezelf een lol en leer eens eerst wat basics. Je stopt nu een 4x string in een integer :X

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

RobIII schreef op woensdag 26 mei 2010 @ 09:39:
[...]

Doe jezelf een lol en leer eens eerst wat basics. Je stopt nu een 4x string in een integer :X
Volgens mij heeft TS Option Strict Off staan <zie mijn ondertitel>

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • Morphogenesis
  • Registratie: Juni 2009
  • Laatst online: 25-06 11:37
Enigzins laat, maar bedankt voor de reacties :)
Ik ga hiermee aan de slag :)
Pagina: 1