Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1636to1640
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabellenzellen in Text-Datei schreiben

Tabellenzellen in Text-Datei schreiben
14.08.2018 15:30:02
Ingo
Hallo
Ich habe eine Excel-Tabelle mit zur Zeit 1598 gefüllten Zeilen. Die Anzahl der gefüllten Zeilen ändert sich mehrmals täglich.
Ich möchte die Inhalte der Spalte mit dem Namen "URL" (Spalte AH) in eine Text-Datei schreiben per Makro. Und zwar so, dass die Zelleninhalte untereinander in die Textdatei geschrieben werden.
Ich habe mir aus einem Forum ein Makro ergoogelt, was das auch soweit erstmal gut macht. Aber in diesem Makro muss ich für die besagte Spalte angeben, von welcher Zeile bis zu welcher Zeile die Zelleninhalte in die Text-Date geschrieben werden sollen.
Das hätte ich gerne anders. Und zwar so, dass das Marko selbst quasi merkt, bis zu welcher Zeile meine Tabelle aktuell geht. Also ich meine, welche Zeile die letzte ist, die noch mit Inhalten gefüllt ist. Ich erläutere es mit einem Beispiel:
Bisher steht im Makro z.B. Range("AH1:AH1598")
Es soll aber sinngemäß sowas sein wie: Range("AH1:letzte_gefüllte_zeile")
Wie kann ich das denn erreichen?
Hier nun das Makro:
Sub speichern()
Dim f As Integer
Dim c As Variant
Dim DateiName As String
f = FreeFile
DateiName = "C:\Users\OttoKarl\Temp\exceltest.txt"
Open DateiName For Output As f
For Each c In Worksheets("Angebot").Range("AH2:AH1598")
Print #f, c
Next
Fehler:
If Err.Number  0 Then
MsgBox Err.Description, vbCritical + vbOKOnly, "Fehler:" & Err.Number
Err.Clear
End If
Close f
On Error GoTo 0
End Sub

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenzellen in Text-Datei schreiben
14.08.2018 15:41:08
Sepp
Hallo Ingo,
Sub speichern()
  Dim f As Integer
  Dim c As Variant
  Dim DateiName As String

  f = FreeFile

  DateiName = "C:\Users\OttoKarl\Temp\exceltest.txt"
  Open DateiName For Output As f
  
  With Worksheets("Angebot")
    For Each c In .Range(.Cells(2, 34), .Cells(.Cells(.Rows.Count, 34).End(xlUp).Row, 34))
      Print #f, c
    Next
  End With

Fehler:
  If Err.Number <> 0 Then
    MsgBox Err.Description, vbCritical + vbOKOnly, "Fehler:" & Err.Number
    Err.Clear
  End If

  Close f

  On Error GoTo 0

End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Tabellenzellen in Text-Datei schreiben
14.08.2018 15:55:48
Ingo
Hallo Sepp
Vielen Dank erstmal für Deine schnelle und tolle Hilfe. Nun habe ich aber folgendes Problem:
Ich hatte ja geschrieben, dass meine Tabelle aktuell bis zur Zeile 1598 mit Inhalten gefüllt ist. Dabei ist mir aber leider ein Fehler unterlaufen. In Spalte AH befindet sich eine Formel:
=WENN(B1599="";"";VERKETTEN("https://example.org/dinge/";KLEIN(B1599);".php"))
Und diese Formal ist bis zur Zeile 2000 in der Spalte AH.
Somit interpretiert Dein Makro ja die Zeilen bis 2000 als gefüllt, richtig? Könnte man es so lösen, dass nur die Zeilen berücksichtigt werden, bei denen in Spalte B ein Inhalt ist? Meine Tabelle hat in Spalte B quasi Einträge bis Zeile 1598.
Kannst Du nachvollziehen, wie ich das meine? Wenn nicht, lass es mich wissen. Dann versuche ich, das nochmal anders/besser zu beschreiben.
Gruß
Ingo
Anzeige
AW: Tabellenzellen in Text-Datei schreiben
14.08.2018 16:18:47
Sepp
Hallo Ingo,
Sub speichern()
  Dim f As Integer
  Dim c As Variant
  Dim DateiName As String

  f = FreeFile

  DateiName = "C:\Users\OttoKarl\Temp\exceltest.txt"
  Open DateiName For Output As f
  
  With Worksheets("Angebot")
    For Each c In .Range("AH2:AH2000")
      If Len(c) Then
        Print #f, c
      End If
    Next
  End With

Fehler:
  If Err.Number <> 0 Then
    MsgBox Err.Description, vbCritical + vbOKOnly, "Fehler:" & Err.Number
    Err.Clear
  End If

  Close f

  On Error GoTo 0

End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Tabellenzellen in Text-Datei schreiben
14.08.2018 16:44:26
Ingo
Hallo Sepp
Jo super. Das ist natürlich ne prima Idee. Da hätte ich ja auch mal selbst drauf kommen können :-)
Noch eine Frage:
Ich füge bei meiner Tabelle immer wieder mal neue Spalten ein und lösche welche. Da kommt es dann ja zu Verschiebungen bei den Spalten-Nummern. Die besagte Spalte hat bei mir den Spaltennamen "URL". Kann man die folgende Zeile entsprechend ändern.
Bisher:
For Each c In .Range("AH2:AH2000")
Zukünftig sinngemäß sowas wie:
For Each c In .Range("URL2":"URL2000")
Ich meine mit Spaltennamen übrigens NICHT die den Spalten-Titel, sondern wirklich den Namen der Spalte, den man bei Excel ja ganz oben links im Namenfeld eintragen/ändern kann.
Gruß
Ingo
Anzeige
AW: Tabellenzellen in Text-Datei schreiben
14.08.2018 17:23:09
Sepp
Hallo Ingo,
    For Each c In .Range("URL").SpecialCells(xlCellTypeFormulas)

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Tabellenzellen in Text-Datei schreiben
14.08.2018 19:14:12
Ingo
Hallo Sepp
Perfekt! Ist es auch möglich, die Text-Datei im UTF-8 Format speichern zu lassen?
Gruß
Ingo
AW: Tabellenzellen in Text-Datei schreiben
14.08.2018 20:01:49
Sepp
Hallo Ingo,
sicher geht das.
Modul Modul2
Option Explicit 
 
Declare Function WideCharToMultiByte Lib "kernel32.dll" (ByVal CodePage As Long, ByVal _
  dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal _
  lpMultiByteStr As Long, ByVal cbMultiByte As Long, ByVal lpDefaultChar As Long, ByVal _
  lpUsedDefaultChar As Long) As Long 
   
Sub speichern() 
  Dim rng As Range, DateiName As String, strTemp As String 
 
  DateiName = "D:\Forum\Test\test.txt" '"rng:\Users\OttoKarl\Temp\exceltest.txt" 
 
  With Worksheets("Angebot") 
    For Each rng In .Range("URL").SpecialCells(xlCellTypeFormulas) 
      If Len(rng) Then 
        strTemp = strTemp & rng.Text & vbCrLf 
      End If 
    Next 
    If Len(strTemp) Then Call UTF8Output(DateiName, Left(strTemp, Len(strTemp) - 1)) 
  End With 
 
  If Err.Number <> 0 Then 
    MsgBox Err.Description, vbCritical + vbOKOnly, "Fehler:" & Err.Number 
    Err.Clear 
  End If 
End Sub 
 
Sub UTF8Output(outputFile As String, Text As String) 
  Dim tmp() As Byte, lngN As Long, FF As Integer 
   
  If Len(outputFile) = 0 Or Len(Text) = 0 Then Exit Sub 
  lngN = WideCharToMultiByte(65001, 0, _
    StrPtr(Text), Len(Text), 0, 0, 0, 0) 
  Redim tmp(0 To lngN - 1) 
  WideCharToMultiByte 65001, 0, StrPtr(Text), Len(Text), _
    VarPtr(tmp(0)), lngN, 0, 0 
  FF = FreeFile 
  Open outputFile For Output As #FF 
  Close #FF 
  FF = FreeFile 
  Open outputFile For Binary As #FF 
  Put #FF, , tmp 
  Close #FF 
End Sub 
 
 
 
 
 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Tabellenzellen in Text-Datei schreiben
14.08.2018 22:30:01
Ingo
Wie kann ich denn feststellen, ob die Text-Datei tatsächlich in UTF-8 kodiert ist?
Wenn ich die Text-Datei im Windows Editor öffne und dann auf [Datei / Speicher unter] klicke, wird mir unten als Codierung ANSI angezeigt. Müsste bei einer UTF-8 Datei dort dann nicht UTF-8 stehen?
AW: Tabellenzellen in Text-Datei schreiben
14.08.2018 22:42:23
Sepp
Hallo Ingo,
also mein Editor (Sublime) zeigt UTF-8 an, den Windows-Editor hab ich noch nie verwendet!
Du kannst auch Online Testen. Chared — Character encoding detection
 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Tabellenzellen in Text-Datei schreiben
14.08.2018 22:47:43
Ingo
Hallo Sepp
Jo alles klar. Der Online-Test zeigt mir auf UTF-8 an. Dann danke ich Dir nochmal sehr für Deine tolle, nette und schnelle Hilfe. Ohne Dich wäre ich da echt aufgeschmissen gewesen.
Gruß
Ingo

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige