Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Alphanumerische Nummern in TXT Datei speichern

Betrifft: Alphanumerische Nummern in TXT Datei speichern von: Andre´
Geschrieben am: 07.05.2008 09:44:51

Hallo alle zusammen,
Ich möchte in einer TXT Datei folgendes realisieren.
Aus Excel möchte ich eine TXT Datei mit dem Namen 1_Nummern.txt auf C erstellen falls noch nicht vorhanden. In der TXT Datei soll eine Alphanumerische Zahl aufsteigend untereinander gespeichert werden. Hierzu soll aus der Tabelle2 Zelle A1 der Wert vor der eigentlichen Zahl vorangestellt werden .

Wenn die TXT Datei neu erstellt wird, dann ist in der Zeile 1 noch keine Zahl. Jetzt sollte der Zellwert aus A1 Bsp.P1_ und eine 1 hinein geschrieben werden (Format: 0000001) dies sollte nun in der Zeile 1 stehen: P1_0000001. Wenn dass Makro dass nächste mal ausgeführt wird dann steht ja bereits P1_0000001 in der Zeile 1 und jetzt soll in die nächste Zeile eine P1_0000002 geschrieben werden. Falls jetzt in der Zelle A1 z.B. P2_ steht und erneut in die TXT Datei geschrieben werden soll, dann muss P2_0000003 in der nächsten Zeile stehen usw.
Die Alphanumerischen Zahl hat immer 10 Stellen.

Das 3. Zeichen der Alphanumerischen Zahl ist immer ein Unterstrich danach kommen die Zahlen maximal 7 Zeichen lang. Wenn jetzt die Zahl nach dem Unterstrich bei 1000000 angelangt z.B. (RT_1000000) dann soll beim nächsten Durchlauf eine weitere TXT Datei mit dem Namen 2_Nummern.txt erzeugt wird wo dann wie Anfangs beschrieben derselbe Prozess abläuft wo allerdings dann bis zur nächsten 1000000 in die 2_Nummern.txt gespeichert wird.

Hier der Aufbau der TXT Datei: https://www.herber.de/bbs/user/52174.txt

Hat dafür jemand eine Lösung
Vielen Dank im Voraus!

MFG Andre

  

Betrifft: AW: Alphanumerische Nummern in TXT Datei speichern von: fcs
Geschrieben am: 07.05.2008 17:15:14

Hallo Andre,

hier mein Vorschlag. Er krankt noch etwas bei der Ermittlung der in der letzten Zeile eingetragenen Nummer.

Gruß
Franz

Sub AppendText()
  
  Dim varDateiname As Variant
  Dim intMax As Integer
  Dim bolNeu As Boolean
  Dim intFF As Integer
  Dim lngNummer As Long
  Dim strText As String
  Const strDateiname As String = "_Nummern.txt" 'teil des Dateinamens
  Const strVerzeichnis As String = "C:\Lokale Daten\Test" 'Verzeichnis mit den Textdateien
  
  'Prüfen ob Dateien schon vorhanden
  varDateiname = Dir(Pathname:=strVerzeichnis & Application.PathSeparator _
        & "*" & strDateiname)
  If varDateiname = "" Then
    varDateiname = strVerzeichnis & Application.PathSeparator & "1" & strDateiname
    bolNeu = True
  Else
    'Letzte Nummerndatei ermitteln
    intMax = 1
    Do Until varDateiname = ""
      If CInt(Left(varDateiname, InStr(1, varDateiname, "_") - 1)) > intMax Then
        intMax = CInt(Left(varDateiname, InStr(1, varDateiname, "_") - 1))
      End If
      varDateiname = Dir
    Loop
    varDateiname = strVerzeichnis & Application.PathSeparator & intMax _
        & strDateiname
  End If
  intFF = FreeFile()
  If bolNeu = True Then
    lngNummer = 1
  Else
    'Nummer in der letzten eingetragenen Zeile ermitteln.
    'Hier muss der Zugriff auf den letzten Datensatz der textdatei optimiert _
      werden, da bei vielen Datenzeilen die Laufzeit unerträglich wird. _
      Wahrscheinlich irgendetwas mit Connections und Recordset.
    Open varDateiname For Input Access Read As #intFF
    Do Until EOF(intFF)
     'Input #intFF, strText
     Line Input #intFF, strText
    Loop
    Close #intFF
    lngNummer = CLng(Mid(strText, 4)) + 1
    If lngNummer > 1000000 Then
      varDateiname = strVerzeichnis & Application.PathSeparator & intMax + 1 _
          & strDateiname
      lngNummer = 1
    End If
  End If
  Open varDateiname For Append As #intFF
  strText = Worksheets(2).Range("A1") & Format(lngNummer, "0000000")
  'Write #intFF, strText
  Print #intFF, strText
  Close #intFF
End Sub




  

Betrifft: AW: Alphanumerische Nummern in TXT Datei speichern von: Antje
Geschrieben am: 07.05.2008 20:13:20

Hallo Franz,

Vielen DANK, hast mir heut schon zum zweiten mal eine wunderbare Lösung präsentiert, die auch wunderbar funzt!

Er krankt noch etwas bei der Ermittlung der in der letzten Zeile eingetragenen Nummer.



Funktioniert doch prima! Hab mal Nummer in Excel bis P1_0524288 erzeugt und in eine TXT Datei kopiert und anschließend Dein Makro laufen lassen. Ist klar je mehr Daten vorhanden, dass dann der Prozess etwas langsamer wird. Ist meiner Meinung nach nicht erheblich!

Da Du einmal im Detail drin bist wäre es schön, wenn Du mir noch erklären könntest, wie ich aus der neusten TXT Datei die letzte Zeile auslesen kann und in ein aktives Tabellenblatt von der aktiven Zeile in die SpalteG die Numerische Zahl wieder gebe.

z.B. aktive Zelle gleich A5 dann soll in der Zelle G5 die Numerische Zahl stehen,
aktive Zelle gleich G7 dann in der Zelle G7 die Numerische Zahl zurückgeben

Ich hoffe es ist für Dich nur eine Kleinigkeit und bedanke mich nochmals im voraus!

MFG Andre


  

Betrifft: Name meiner Fr.(arbeiten am selben Rechner)sorry von: Andre´
Geschrieben am: 07.05.2008 20:16:55




  

Betrifft: AW: Name meiner Fr.(arbeiten am selben Rechner)sor von: fcs
Geschrieben am: 08.05.2008 00:36:19

Hallo Andre,

ich befasse micht selten mit dem Zugriff von Excel auf externe Daten/Datenbanken.
Es gibt bestimmt eine elegantere/schnellere Lösung, um an den Inhalt in der letzten Zeile in der Textdatei zu kommen.

Zu deinem neuen Problem.
Die Lösung ist in dem von mir erstellten Makro ja schon weitestgehend enthalten.
Hier die erforderlichen Anpassungen, um den Zahlenwert in die Spalte G der aktiven Zeile einzutragen.

Gruß
Franz

Sub LetztenWertHolen()
  
  Dim varDateiname As Variant
  Dim intMax As Integer
  Dim intFF As Integer
  Dim strText As String
  Dim lngNummer As Long
  Const strDateiname As String = "_Nummern.txt" 'teil des Dateinamens
  Const strVerzeichnis As String = "C:\Lokale Daten\Test" 'Verzeichnis mit den Textdateien
  
  'Prüfen ob Dateien schon vorhanden
  varDateiname = Dir(Pathname:=strVerzeichnis & Application.PathSeparator _
        & "*" & strDateiname)
  If varDateiname = "" Then
    MsgBox "Es gibt noch keine Datei " & strVerzeichnis & Application.PathSeparator _
        & "1" & strDateiname
  Else
    'Letzte Nummerndatei ermitteln
    intMax = 1
    Do Until varDateiname = ""
      If CInt(Left(varDateiname, InStr(1, varDateiname, "_") - 1)) > intMax Then
        intMax = CInt(Left(varDateiname, InStr(1, varDateiname, "_") - 1))
      End If
      varDateiname = Dir
    Loop
    varDateiname = strVerzeichnis & Application.PathSeparator & intMax _
        & strDateiname
    intFF = FreeFile()
    'Nummer in der letzten eingetragenen Zeile ermitteln.
    Open varDateiname For Input Access Read As #intFF
    Do Until EOF(intFF)
      Line Input #intFF, strText
    Loop
    Close #intFF
    lngNummer = CLng(Mid(strText, 4))
    'Wert in Spalte 7 (G) der aktiven Zeile schreiben
    Cells(ActiveCell.Row, 7).Value = lngNummer
  End If
End Sub




  

Betrifft: Alphanumerische Nummern in TXT Datei speichern von: Andre´
Geschrieben am: 08.05.2008 07:53:11

Hallo Franz,

Danke für die Antwort.

funktioniert soweit ganz gut nur bekomme ich die Zahlen zurück und nicht den gesamten Zeileninhalt aus der TXT Datei.

Bsp.:
letzte Zeile in der TXT Datei steht: P1_0999999
dann erhalte ich in der Spalte G: 999999

Hast Du dafür noch eine Lösung!

MFG Andre


  

Betrifft: AW: Alphanumerische Nummern in TXT Datei speichern von: fcs
Geschrieben am: 08.05.2008 09:29:43

Hallo Andre,

liest doch mal deine Frage durch. Dann weiss du warum ich das so gemacht habe.
"nummerische Zahl"? Was ist das wohl? P2_0123456 ?

Und bei etwas Lesen und Verstehen-Wollen des Codes hättest du auch selber auf die Lösung kommen können.

Gruß
Franz

Ändere die 3.-letzte Zeile:

    Cells(ActiveCell.Row, 7).Value = strText




  

Betrifft: AW: Alphanumerische Nummern in TXT Datei speichern von: Andre´
Geschrieben am: 08.05.2008 10:08:53

Hallo Franz
hatte natürlich die Alphanumerische Zahl gemeint aber nicht geschrieben, sorry.

Vielen Dank für Dein Verständniss und der Hilfestellung, es funktioniert prima.

MFG Andre


 

Beiträge aus den Excel-Beispielen zum Thema "Alphanumerische Nummern in TXT Datei speichern"