Auslesen von Excel Zeile mit Visual Basic (VIsual Studio 2015)

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Custer.

    Auslesen von Excel Zeile mit Visual Basic (VIsual Studio 2015)

    Hallo zusammen

    Ich programmiere nun seit einiger Zeit in Excel mit VBA. Das klappt ganz gut. Ich wollte nun einmal ein Programm von mir mit Visual Basic schreiben. Zum Lernen von VB habe ich mir vor einiger Zeit ein EBook geholt, was allerdings noch für VIsual Studio 2013 ist. Kürzlich habe ich nun Visual Studio 2015 heruntergeladen und wollte damit beginnen. Der erste Versuch war, ein Excel Workbook zu öffnen und aus einem bestimmten Tabellenblatt eine Zeile auszulesen. Leider scheiterte ich bereits daran. Ich habe mich grundsätzlich an das EBook gehalten.

    HIer mein Code:

    VB.NET-Quellcode

    1. Imports Microsoft.Office.Interop
    2. Module GetDB
    3. Sub Load_Datenbank()
    4. Dim ObjExcel As Excel.Application
    5. Dim ObjWorkbook As Excel.Workbook
    6. Dim ObjWorksheet As Excel.Worksheets
    7. Dim Wert As String
    8.  
    9. ObjExcel = CreateObject("Excel.Application") 'Öffnet Excel-Instanz
    10. ObjExcel.Visible = True
    11. ObjExcel.WindowState = Excel.XlWindowState.xlNormal
    12. ObjWorkbook = ObjExcel.Workbooks.Open("D:\Eigene Dateien Silvan\OneDrive\Programmieren\Visual Basic\Projekte\SVGDatenbank\Datenbank\SVGDB.xlsm")
    13. ObjWorksheet = ObjWorkbook.Worksheets("SVGDB") 'HIER KOMMT DER FEHLER<-----------------------------------------!
    14. Wert = ObjWorksheet.range("A1").value
    15. MsgBox(Wert)
    16.  
    17. End Sub
    18. End Module


    Es meldet mir immer an derselben Stelle den Fehler. Woran liegt das? Kann ich das Tabellenblatt nicht so ansprechen oder was mache ich falsch?




    Hier noch das Bild des Fehlers.


    Ich bedanke mich bereits für eure Hilfe.


    Gruss

    Custer

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Custer“ ()

    Custer schrieb:

    Ich habe mich grundsätzlich an das EBook gehalten.
    Dann taugt das nicht, wenn dabei so ein Code herauskommt:

    VB.NET-Quellcode

    1. Dim ObjExcel As Excel.Application
    2. '...
    3. ObjExcel = CreateObject("Excel.Application") 'Öffnet Excel-Instanz
    Die Datentypen passen eiglich nicht zueinander (es geht aber doch, was eiglich noch schlimmer ist).
    Jdfs. Das ist ein Hinweis, dass du Option Strict Off programmierst, was wiederum ein Hinweis ist, dass das Buch auf Strict On keinen Wert legt, und damit isses disqualifiziert.
    Schnapp dir den Löffelmann2005 oder den Kühnel/Leibhard - Links findeste hier: Entwickler-Ressourcen und Tools, Bücher und WebCasts

    Und dann Dein Visual-Studio in Ordnung bringen, das wird nämlich immer mit Strict Off ausgeliefert, was eine echte Katastrophe ist. Anleitung dazu : Visual Studio - Empfohlene Einstellungen

    Soviel dazu, und nun die schlechte Nachricht: Zu deim Problem weiß ich eiglich nix konkretes. Ich vermeide immer Excel-Zugriffe, weil das hat echt viele fiese Fußangeln, also ist schwierig, was wirklich stabiles damit hinzukriegen.
    Am besten sind glaub noch OpenSource-Bibliotheken, mit denen man Excel-Dateien bearbeiten kann, da hat man nicht diese lausige Office-Com_Objekt-Marshalling-Hundek... am Schuh.

    Insgesamt kein Anfänger-Thema. Anfangen sollte man mit Strict On, und dann sich drum kümmern, Datentypen gebührend zu unterscheiden.
    Hallo zusammen

    Ich bedanke mich bei euch für eure Ausführungen. Gehe ich richtig in der Annahme, dass Strict on vegleichbar ist miT Option Explicit in VBA?

    Den Thread bezüglich den Einstellungen werde ich mir baldmöglichst zu Gemüte führen, danke.

    @ErfinderDesRades: Welche Offline-Datenbank würdest du empfehlen, wenn auf dem Zielrechner kein Access installiert ist? Worin lege ich meine Daten am besten ab?


    Danke und Gruss

    Custer

    Custer schrieb:

    dass Strict on vegleichbar ist miT Option Explicit in VBA?
    Nein, Option Explicit ist auch eine Option, und die ist gottlob voreingestellt.
    Nein, Strict On eine Selbstverständlichkeit, die dir bisher unbekannt ist - nämlich die weist den Compiler an, zu verlangen, dass Datentypen ausschließlich in zueinander passender Weise verwendet werden. Etwa dass du nicht einen Text (String) mit einer Zahl (Integer) addieren kannst.

    Lass dir gesagt sein: Du musst alles vergessen, was du bislang an Programmierung gelernt hast - im Kontext von VB.net ist das zu 100% Mist, denn zu 100% gibts in jedem Falle eine bessere OOP-Variante, dasselbe Ziel zu erreichen.
    Und das ist die allergrößte Gefahr für Anfänger, dass sie ihren ollen Schrott (was bislang ja kein Schrott war) mit hinein-nehmen, und so über Jahre Anfänger bleiben.
    Eigentlich wär besser, du würdest mit c# anfangen, da muss man nicht so hohen Überzeugungs-Aufwand treiben, um dich vom Müll abzubringen, denn in c# gibts diesen Müll einfach garnet.



    Als Offline-Datenbank empfehle ich dringend den DatasetOnly-Ansatz, also gar keine Datenbank.
    Für Datenverarbeitung steht eine gewaltige Infrastruktur bereit, aber man versaut sich zu 95% (Anfänger: 100%) zwangsläufig alles, wenn man in die Datenbänkerei mit einer Datenbank einsteigt.
    Denn in allen Büchern und überall im Netz wird mit den DbCommands angefangen, um Daten abzurufen, und das ist genau der Ansatz, der die gesamte restliche Infrastruktur blockiert.

    Daher erst die Infrastruktur kennenlernen.
    Wenn man dann später eine DB hinterlegt (was jederzeit möglich ist), verfällt man automatisch nicht auf DbCommands, sondern lässt gleich DataAdapter ihren Job machen.
    Es ist auch zwingend notwendig, Theorie zu erlernen, denn wenn man nicht weiß, was ein Datenmodell ist, und versucht, ohne sich das zu erarbeiten, voranzukommen, dann hat man keine Chance.

    Ich hab haufenweise Tuts zum Thema, und auch eine Zusammenstellung dessen, was man braucht, aber das halte ich jetzt erstmal zurück, bis du die Visual Studio - Empfohlene Einstellungen umgesetzt hast, oder auf c# umgestiegen bist.

    Es wäre sonst zu verführerisch für dich, weiter rum-zu schmuddeln.

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

    ErfinderDesRades schrieb:

    Ich hab haufenweise Tuts zum Thema, und auch eine Zusammenstellung dessen, was man braucht, aber das halte ich jetzt erstmal zurück, bis du die Visual Studio - Empfohlene Einstellungen umgesetzt hast, oder auf c# umgestiegen bist.


    Guten Morgen ErfinderDesRades

    Besten Dank für deine Antwort. Gerne werde ich deinen Rat befolgen und mich zuerst mit C# auseinandersetzen. Auch wenn das ganze nun etwas vom Thema abschweift, möchte ich dich trotzdem Fragen, mit welchem Buch oder Tutorial ich denn diese Sprache wirklich gut erlernen kann.

    Benötige ich im Endeffekt überhaupt einen Umstieg von C# nach VB.net, oder ist die C# Programmiersprache genau so gut? Bzw. weshalb sollte man VB.net den Vorzug geben?

    Danke und Gruss

    Custer
    Prinzipiell ist es ganz egal.
    Am Anfang sind die Sprachen absolut gleichwertig, erst für sehr fortgeschrittene zeigt c# dann geringfügige Vorzüge.
    Andererseits ist man dann eh bereits so weit fortgeschritten, dass man die jeweils andere Sprache eigentlich ebensogut beherrscht.

    Diese Parität besteht aber nur, wenn du dich von den lausigen vb-Altlasten befreist, also wie gesagt: Visual Studio - Empfohlene Einstellungen

    Und ich persönlich kenne halt die genannten 2 wirklich guten vb.net-OpenBooks, von c# kenne ich keines - wohl weil ich mich auch nicht danach umgeschaut hab.

    ErfinderDesRades schrieb:

    Prinzipiell ist es ganz egal.
    Am Anfang sind die Sprachen absolut gleichwertig, erst für sehr fortgeschrittene zeigt c# dann geringfügige Vorzüge.
    Andererseits ist man dann eh bereits so weit fortgeschritten, dass man die jeweils andere Sprache eigentlich ebensogut beherrscht.

    Diese Parität besteht aber nur, wenn du dich von den lausigen vb-Altlasten befreist, also wie gesagt: Visual Studio - Empfohlene Einstellungen

    Und ich persönlich kenne halt die genannten 2 wirklich guten vb.net-OpenBooks, von c# kenne ich keines - wohl weil ich mich auch nicht danach umgeschaut hab.


    Du würdest also sagen, dass wenn ich die Empfohlenen Einstellungen durchmache und das befolge und die beiden von dir bekannten, guten vb.net-OpenBooks lese, kann ich genauso VB.net direkt machen, ohne C# zuerst?

    Gruss

    Custer