Von einer unbekannte Datei den Namen herausbekommen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von mindanao.

    Von einer unbekannte Datei den Namen herausbekommen

    Hallo
    Mein Problem ist folgendes
    Bei Programmstart befindet sich in E:\ABC nur eine mit Daten befüllte Exceldatei.
    Vom Filenamen bekannt sind die ersten 3 Buchstaben, sowie die Endung .xlsx
    Von dieser Datei brauch ich aber den ganzen Namen, weil darin ein Datum und eine
    Auftragsnummer enthalten ist die ich ausschneiden muss um sie in eine andere Excel
    Datei schreiben zu können.

    Alles was ich bis jetzt zum Thema Dateibearbeitung gefunden habe, und das auch geht
    mache ich mit Syxtem.IO.

    Wer kann Bitte helfen ? ?(
    Hilfe den Nichtwissenden :thumbsup:
    @mindanao LongTimeListener? ;)
    Probierma

    VB.NET-Quellcode

    1. Dim fi() = New IO.DirectoryInfo("e:\").GetFiles("abc*.xlsx", IO.SearchOption.TopDirectoryOnly)
    2. Dim sb = New StringBuilder
    3. For Each file In fi
    4. sb.AppendLine(file.FullName)
    5. Next
    6. MessageBox.Show(sb.ToString)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ersmal Danke für dieschnelle Antwort
    Wenn ich Deinen Code genau so eingebe bekomme ich folgenden Fehler:
    "StringBuilder" ist nicht definiert.

    Kann man das auch ohne Schleife machen, da definitiv nur 1 File drin ist?
    Hilfe den Nichtwissenden :thumbsup:
    1. StringBuilder ist im Namespace Text drin => wenn Du den Import nicht verwenden willst, dann stünde in Zeile 2 von RFGs Code Dim sb = New Text.StringBuilder
    2. Ohne Schleife:

    VB.NET-Quellcode

    1. Dim FileYouWant = New IO.DirectoryInfo("e:\").GetFiles("abc*.xlsx", IO.SearchOption.TopDirectoryOnly)(0)
    2. MessageBox.Show(FileYouWant.FullName)

    EDIT: Und um nur den »reinen Namen« ohne Endung zu erhalten:

    VB.NET-Quellcode

    1. Dim FileName = IO.Path.GetFileNameWithoutExtension(FileYouWant.FullName)

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    @mindanao Da solltest Du aber allein drauf kommen:

    VB.NET-Quellcode

    1. Dim fi() = New IO.DirectoryInfo("e:\").GetFiles("abc*.xlsx", IO.SearchOption.TopDirectoryOnly)
    2. MessageBox.Show(fi(0).FullName)
    Und:
    Lass Dir von der IDE helfen:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ok Leute, seid nicht so streng mit mir
    Ich bin zwar schon seit 2014 angemeldet, aber eigentlich habe ich von VB noch keinen Durchblick.
    Die Fehler habe ich wegbekommen, es kommt aber ein Daten speichern unter Dialog den ich aber gar nicht möchte.
    Ich habe meine Anfrage noch mal durchgelesen und gemerkt das es zu ungenau formuliert ist. Deswegen 2. Versuch
    Das ganze soll ein Tool werden, das für meinen Kollegen, meinem Chef und auch für mich die bearbeitung eines
    grossen Auftrags wesentlich vereinfachen soll. Los geht alles mit einem Auftrag in Form einer merkwürdigen geschützten
    Exceldatei. In den ersten Wochen konnte ich die noch als .csv Datei abspeichern und per Blitz 3D einlesen und verarbeiten.
    Das geht seit 2-3 Wochen nicht mehr. Diese Auftragsdatei kommt zwar immer noch, doch ein grosteil der eingetragenen
    Daten ist einfach falsch und kommen als Email. Mein Chef soll mit deshalb die Datei umbenannt und mit den wichtigen
    Daten durch "-" getrennt im Dateinamen als Mailanhang schicken. Ich kopiere das in einen Ordner, zur Zeit bei mir K:\TEST.
    Eigentlich kenne ich ja den Dateinamen, aber wenn es schnell gehen soll und die Gefahr falscher Eingaben vermieden
    werden, will ich das ganze automatisieren. Diese Aufträge kommen oft sogar mehrmals am Tag. So soll es mal funktionieren.
    Besagte .xlsx Datei in den vorher vom Programm gelöschten Ordner kopieren
    Taste drücken
    Programm holt sich den Dateinamen aus dem Ordner TEST speicher ihn als String
    den kann ich jetzt zerlegen und habe danach alle Daten die mein Chef per Mail bekommen hat
    Ich habe mir die orginale xlsx Datei genau nachgebastelt
    jetzt kann ich Daten aus der orginal Datei auslesen mit den anderen Daten kombinieren
    Wenn alles geklappt hat, werden Lieferscheine, Abtreichlisten und benötigte Dateien generiert und das Programm beendet.
    Bis auf Prg Start, Tastendruck soll alles ohne weiteres zutun ablaufen. Das ist das Ziel. Vieles, wie Datei löschen, umbenennen
    aber auch Exceldaten lesen und schreiben sowie drucken habe ich schon hinbekommen. Es fehlt halt nur der Dateiname.
    So jetzt habe ich fast einen Roman geschrieben, obwoghl ich so schreibfaul bin.
    Hilfe den Nichtwissenden :thumbsup:

    mindanao schrieb:

    es kommt aber ein Daten speichern unter Dialog den ich aber gar nicht möchte.
    Wenn Du das Programm im Studio im Debug-Modus laufen lässt, machst Du an dieser Stelle ein Break

    da kommst Du genau an der Stelle im Code raus, wo dieser Dialog aufgewrufen wird und kannst sie umschreiben. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    mindanao schrieb:

    Die Fehler habe ich wegbekommen, es kommt aber ein Daten speichern unter Dialog den ich aber gar nicht möchte.
    Erstaunlich!

    Normalerweise "kommen" Dialoge nicht so einfach.

    Also wenn es dich stört, und du möchtest Ab-Hilfe, müsstest du bisserl mehr darüber erzählen. Allein die Info "er kommt" reicht nicht, um ihn dir wegzuhexen.
    Hallo
    Naja, wenn man denkt es wird einem ein Dateiname angezeigtnund sofort nach dem start popt
    eine FileSelectBox mit Name Datei speichern unter, ist es kommt doch gar nicht so verkehrt.
    Ich habe unwissen wie ich bin einfach mal mit dem code von RodFromGermany rumgespielt bis
    nur noch die 1. Zeile da war. Wenn ich auf Starten klick, ist sofort wieder die Box zum File
    speichern auf.
    Hilfe den Nichtwissenden :thumbsup:
    Nun, wenn im Programm kein Dialog explizit eingebaut wurde, kommt auch keiner. Welche Codezeilen stehen denn in den Startprozeduren (New(), Form_Load, Form_Shown)?
    Oder, hoppla. Befinden wir uns wirklich in Visual Studio oder ggf. irgendwo in einem makromodifizierten Officeprogramm wie Word oder Excel? Nur zur Sicherheit, bevor wir alle aneinander vorbeireden.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Mach mal nen Screenshot des Dialogs und lad den hier hoch.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Hat sich fast erledigt
    Nach dem Neustart gehen die Beispiele
    Was mir noch fehlt
    Den Filenamen in eine TextBox
    und nochmal in eine Variable (zur Sicherheit für Dummies :rolleyes: )
    Hilfe den Nichtwissenden :thumbsup:
    Wie bereits in Post#4 geschrieben. Und in eine TextBox damit:

    VB.NET-Quellcode

    1. TextBox1.Text = FileYouWant.FullName

    oder eben

    VB.NET-Quellcode

    1. TextBox1.Text = FileName

    Vorausgesetzt, Du hast eine TextBox namens TextBox1.

    Kannst Du uns kurz erklären, warum nun kein Dialog mehr kommt, welcher ohne Vorwarnung aufploppt?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.