Über Visual Basic und NICHT vba auf excel Datei zugreifen und vergleichen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von razzzer530i.

    Über Visual Basic und NICHT vba auf excel Datei zugreifen und vergleichen

    Hallo,

    habe ein riesiges Problem und benötige schnelle Hilfe.

    Ich habe ein Formular, dass sich aus einer temporären Datei einen Benutzernamen zieht. Dieser Benutzername ist ebenfalls in einer Excel-Tabelle in Spalte 1 festgehalten. In Spalte 2 ist das dazugehörige Passwort gespeichert.
    Nun möchte ich automatisch den Benutzernamen den ich aus der temporären Datei bereits habe, in der Spalte 1 suchen und das Passwort aus Spalte 2 in eine Variable einlesen. Meinetwegen auch in ein Textfeld.

    Kann mir da jemand weiterhelfen?

    Danke für jeden Tipp den ihr habt!

    -razzzer530i-
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~
    @petaod
    Ich habe ähnliches vor und hab mal deinen Link verfolgt, ich hab zu dem Code dort eine kleine Frage: Wenn ich die Update-Funktion dort verwende, werden die veränderten Daten auch gespeichert? Oder nur verändert im DGV angezeigt, aber die Änderungen nicht in die Excel übernommen?

    Liebe Grüße
    rory
    "Es ist sehr einfach, ein Programm zu schreiben, das innerhalb kürzester Zeit und mit wenig Speicherplatzbedarf ein vorgegebenes Problem NICHT löst." - H.A. Klaeren
    Ich arbeite mit VB.NET und habe das jetzt komplett über vb und die temporäre Datei(txt-Datei) gemacht.
    Habe einfach in der Datei direkt gesucht und mir somit den Umweg des Zwischenspeicherns erspart.

    VB.NET-Quellcode

    1. public Function getpw(ByVal smail$) As String 'Passwort des Benutzers suchen
    2. If Right(smail, 1) <> vbTab Then smail = smail & vbTab
    3. With CreateObject("scripting.filesystemobject").getfile("Dateipfad\Datei.txt").openastextstream
    4. On Error Resume Next
    5. getpw = Split(Split(.readall, smail$)(1), vbCrLf)(0)
    6. End With
    7. End Function


    Um das aber in VB.NET zu verwenden musst du die "right Funktion" nachbauen.

    VB.NET-Quellcode

    1. Public Shadows Function Right(ByVal sText As String, ByVal nLen As Integer) As String 'Right-Function aus VBA nachbauen
    2. If nLen > sText.Length Then nLen = sText.Length
    3. Return (sText.Substring(sText.Length - nLen))
    4. End Function


    So liest du nur die Daten aus ohne etwas zu überschreiben oder zu öffnen.
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~

    razzzer530i schrieb:

    Um das aber in VB.NET zu verwenden musst du die "right Funktion" nachbauen.
    Nö...kannst auch String.Substring() verwenden
    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

    Radinator schrieb:

    razzzer530i schrieb:

    Um das aber in VB.NET zu verwenden musst du die "right Funktion" nachbauen.
    Nö...kannst auch String.Substring() verwenden



    Defenitiv schöner und kürzer^^
    ~Wir leben zwar alle unter dem gleichen Himmel, aber es haben nicht alle den gleichen Horizont~
    Hi
    das was du hier verwendest, ist eher ein VBScript-Ansatz. .Net arbeitet nicht mit CreateObject.
    Für Dateien verwende System.IO, z.B. System.IO.File.ReadAllText.
    Wenn es sich vermeiden lässt, ist es stets eine gute Idee, auf Dateien zu verzichten. ;)
    On Error Resume Next ist ein extrem schlechter Weg, Fehler zu behandeln. Wenn es sich nicht vermeiden lässt, verwende das Try-Catch-Statement (oder Try-Catch-Finally). Das besteht aus den folgenden Blöcken:
    - Try: Versuche etwas zu tun, wenn eine Ausnahme auftritt (bezeichnet man auch als Fehler ;) ), wird unter Umständen in den Catch-Block gesprungen
    - Catch[(e As <ExceptionType>)]: Fange alle Ausnahmen des Typs ExceptionType ab. Es können beliebig viele Catch-Blöcke aneinander aneinander gereiht werden, es wird aber nur der erste Block ausgeführt, in dem eine Typübereinstimmung vorhanden ist (wird über Vererbung geregelt). Throw leitet die Ausnahme nach oben weiter
    - Finally: Wird immer ausgeführt.

    Was du unbedingt aktivieren solltest, ist Option Strict und zwar für dein aktuelles Projekt, sowie für alle zukünftigen Projekte. Ansonsten ist 123 * "Hello" eine zumindest bis zur Ausführung akzeptierte Aktion, bzw. alle expliziten Typänderungen (z.B. Double nach Integer) werden afaik automatisch durchgeführt, egal ob beabsichtigt oder nicht und du wirst mit Fehlern überschüttet).

    Viele Grüße
    ~blaze~