VB 2010 und Excel 2013

  • VB.NET

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    VB 2010 und Excel 2013

    Hallo zusammen

    Stehe vor einen echt dummen Problem.
    Habe mir nun seit Wochen ein Programm zusammen getüfftelt welches unteranderem Einträge noch Excel kopieren/Übertragen soll. Dies hat auch ohne Probleme geklappt.
    Habe nun seit gestern MS Office Pro.Plus 2013 auf meinem Rechner und seit dem bekomme ich folgende Meldung.
    (Hat vorher mit MS Student ohne Probleme funktioniert)
    Wer ist so nett und kann mir helfen.

    Danke im Vorraus

    Bilder
    • Unbenannt.PNG

      39,53 kB, 524×316, 136 mal angesehen
    Welche Version war den die Student Version.
    Ich müsste jetzt Lügen aber vom Bauch heraus würde ich sagen das Office 2013 einen anderen Verweis brauchst als z.b. ein Office 2010 da gibts ja Versionsnummer wie z.b.
    Microsoft Office 12, usw...

    Das was dir die Fehlermeldung aber sagen will ist das du falsch castest. Zeig mal die betroffene Zeile bzw. den Code Abschnitt wo dies passiert.
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.
    @Snaptu

    Hey, habe mir auch schon sowas gedacht dass das evt. an der Version liegt.
    Ich werde nach schauen und später bescheid geben.

    An dem Programm kann es nicht liegen da dieses auf einem USB Stick läuft (Auch die xls. Dateien)
    und dies bei einem anderen PC der ebenfalls Student hat ohne Probleme klappt.

    Bis später und danke nochmals für die schnelle antwort.

    Otti schrieb:

    An dem Programm kann es nicht liegen
    Sei dir da lieber nicht so sicher.


    Die Fehlermeldung ist ja ein Typumwandlungs-Fehler. Evtl. rührt der daher, dass das Proggi mit einer Excel-Dll gecodet wurde, was zu einer anneren Office-Version gehört.
    Bei Office-Interop sollte man normal mit Strict On und streng typisiert entwickeln, aber nach der Entwicklung in den Modulen, die auf Excel-Objekte zugreifen, Strict Off machen und den Code auf hanebüchen untypisiert umstellen.
    Dadurch wird er flexibel, was verschiedene Office-Versionen angeht.

    Aber überprüf das erstmal, bevor du sonen grausigen Eingriff in dein Proggi vornimmst.

    ErfinderDesRades schrieb:

    Bei Office-Interop sollte man normal mit Strict On und streng typisiert entwickeln, aber nach der Entwicklung in den Modulen, die auf Excel-Objekte zugreifen, Strict Off machen und den Code auf hanebüchen untypisiert umstellen.


    *grins* Hatte auch das Problem, dass ich, nachdem ich in einem meiner Projekte, bei dem ich über die Excel.Interop Schnittstelle auf Excel zugegriffen habe, in mit einem Excel.Application Objekt, ein Worksheet selektieren wollte. Problem war nämlich folgendes, das Application-Objekt hat eben die ReadOnly Property Worksheet As Excel.Sheets (Sheets ist hier ein Inteface). Das Worksheet kann ich mit Worksheet und mit Worksheet(index As Object) ansprechen (hier sieht man, dass untypisiert gearbeitet wird). Lustigerweise zeigt mir Intellisense, wenn ich Worksheet.Select mache, im Kontext das Select an, wenn ich aber Worksheet(_tabell). schreibe, dann erscheint das Select aber nicht mehr.
    Was ich hier nur nich verstehe, ist, warum die Select-Sub erstens als [Select]() definiert ist und zweitens warum bitte ein Optional Replace As Object = Nothing) als Parameter erwartet wird.



    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    @ErfinderDesRades

    Hallo

    also bei der Fehlermeldung makiert VB mir diese Zeile

    Quellcode

    1. Dim xls_ActiveSheet As New Microsoft.Office.Interop.Excel.Worksheet


    Quellcode

    1. Imports Microsoft.Office.Interop
    2. Imports System.Runtime.InteropServices


    unter verweise kann ich die dll garnicht mehr finden?!? wurde die evt. mit der Deinstallation von "MS Student" gelöscht ????
    Die einzige die ich finden kann ist unter "COM" - Microsoft Office 15.0 Object Libary ?!?

    Otti schrieb:

    lso bei der Fehlermeldung makiert VB mir diese Zeile

    Quellcode

    Visual Basic-Quellcode

    1. Dim xls_ActiveSheet As New Microsoft.Office.Interop.Excel.Worksheet



    Also im Normalfall bearbeitet man von VB aus eine Excel-Datei NICHT mich einem Worksheet objekt, sondern mit einer Instanz von Excel.Application.

    Anmerkung: Wenn du wie gesagt werte aus einer Excel-Datei lesen willst, bzw werte in Zellenbereichen ändern willst, dann instanzier dir ein Application-Ojekt, öffne die Datei, selektiere die gewünschte Tabelle und zieh dir dann die Werte raus

    VB.NET-Quellcode

    1. Dim eApp As New Microsoft.Office.Interop.Excel.Application
    2. With eApp
    3. .Open(_pfadZurXlsx)
    4. CType(.Worksheets(_tabellenName), Microsoft.Office.Interop.Excel.Worksheet).Select()
    5. .Range(_zellenBereich).Vavlue = _wert
    6. .ActiveWorkbook.Saved = True
    7. .ActiveWorkbook.Save()
    8. .ActiveWorkbook.Close()
    9. .Quit()
    10. End With
    11. eApp = Nothing


    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    ähm - klar arbeitet man mit einem Worksheet - dein Beispiel zeigt es ja: du rufst dessen .Select auf.
    Nur erstellt man niemals ein Worksheet mit New

    Anfänger (sorry) schreiben oft überall ein New mit hin, weil sie dessen Bedeutung noch nicht ganz klar haben, und wo New erforderlich, und wo nicht.
    Vmtl. weil sie's mal an annerer Stelle weggelassen hatten, wos nötig war, und da kams dann zum Absturz.
    Also eher ein Gewohnheits-Lernen (aus fehlern lernt man) als eine Verständnis-Lernen.

    @TE: Jetzt nicht beleidigt sein, sondern mach dir klar, was New bedeutet: Ein neues Objekt wird erstellt. Beim Excel-Zugriff will man aber kein neues, sondern man will ein bereits bestehendes Worksheet zugreifen.
    Falls du doch ein neues willst, so ist bei Worksheets New trotzdem nicht vorgesehen, denn es ist Aufgabe des Workbook-Objektes, neue Worksheets zu generieren.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()

    @ErfinderDesRades
    @Radinator

    Hallo zusammen ich glaube es herscht ein kleines verständnisproblem, habe mich evt. falsch ausgedrückt.
    ich habe eine xls. Datei als vorlage (Kopf und Fusszeilen u.a.) und diese soll als neue eigenständige Datei gespeichert werden.
    Ich übertrage nur werte/texte usw. von VB nach Excel, ich rufe keine werte ab.
    Wenn das jedoch mit <New> nicht die richtige rangehensweise ist lasse ich mir gerne helfen, bin nun mal noch neu in dem gebiet und freue mich über jede Anregung.

    Jedoch denke ich nicht das das hilft um mein eigentliches Problem zulösen.
    Ich denke da ziemlich simpel. Wenn es vorher klappt wieso nicht mit einer anderen Excel Version ???
    Glaube nicht das in diesem Fall ein von mir falsch gesetztes <NEW> die Ursache ist.

    Wenn Ihr oder wer anderes noch eine Idee hat würde ich mich freuen.

    Danke zusammen.