Makro exelspalten in txt datei exportieren

  • #1
M

mr.ant

Neues Mitglied
Themenersteller
Dabei seit
16.08.2005
Beiträge
4
Reaktionspunkte
0
Hi Jungs,
ich bin leider absoluter Makro-Neuling und brauche deshalb etwas Hilfe.
Ich versuche gerade aus einer Exel datei die Spalten a,c und e zu exportieren und sie dann in einer txt datei zu speichern.

Also das Ganze sollte von einer Exeldatei die wie folgt aussieht

SpalteA | SpalteC | SpalteE
1234 | Muenchen | Deutschland
3544 | London | England

in eine .txt Datei umgewandelt werden die folgendermaßen aussieht:
1234, München, Deutschland
3544, London, England


Bitte um Hilfestellung
 
  • #2
Mach eine neue Spalte mit der Formel =A1&, &B1&, &E1.
Diese neue Spalte kopierst du einfach ins Notepad. Das ist sicher einfacher und schneller als ein Makro.
 
  • #3
Nein weil ich diese datei dann von einem Server auslesen lassen will und da bringt mir ständiges kopieren nichts
 
  • #4
Hallo mr.ant,

ich hab dir mal einen Makro gestrickt.

- Spalte A, B, E
- Inhalte getrennt durch Komma Leerzeichen
- Zeilenabschluß Cr+Lf
Code:
Option Explicit
Sub Spalte_ABE_InTextdatei()

  Const c_Path = c:\Testxx
  Const c_Filenamen = ExportSpalteABC.txt
  Const c_Trenn = , 
  
  Dim h As Integer, s_Filename_Full As String
  Dim ws As Worksheet
  Dim l_ZeileAMax As Long, l_ZeileBMax As Long, l_ZeileEMax As Long
  Dim l_maxzeile As Long, x As Long
  Dim s_SpalteA As String, s_SpalteB As String, s_SpalteE As String
  
 ->aktives Blatt setzen
  Set ws = ActiveSheet
  
 ->max. Zeile bestimmen
  l_maxzeile = 1
  l_ZeileAMax = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
  If l_maxzeile < l_ZeileAMax Then l_maxzeile = l_ZeileAMax
  l_ZeileBMax = ws.Cells(ws.Rows.Count, 2).End(xlUp).Row
  If l_maxzeile < l_ZeileBMax Then l_maxzeile = l_ZeileBMax
  l_ZeileEMax = ws.Cells(ws.Rows.Count, 5).End(xlUp).Row
  If l_maxzeile < l_ZeileEMax Then l_maxzeile = l_ZeileEMax

 ->nur eine Zeile ?
  If Dir(c_Path, vbDirectory) =  Then
    MsgBox ( _
      Spalte A,B,E sind leer oder haben nur eine Überschrift. & vbLf & _
      -->Abbruch)
      GoTo Aufraeumen
  End If

 ->Verzeichnis prüfen
  If Dir(c_Path, vbDirectory) =  Then
    MsgBox ( _
      Verzeichnis  & c_Path &  existiert nicht. & vbLf & _
      Bitte Verzeichnis anlegen.)
      GoTo Aufraeumen
  End If

  s_Filename_Full = _
    c_Path & Application.PathSeparator & c_Filenamen

 ->Filehandel
  h = FreeFile
 ->Datei öffnen
 ->Erzeugt Datei neu, überschreibt ggf. vorhandene Datei !!!
  Open s_Filename_Full For Output Access Write As #h
  
    For x = 1 To l_maxzeile
      
     ->Werte der Zeile auslesen und in String wandeln
      s_SpalteA = ws.Cells(x, 1).Value
      s_SpalteB = ws.Cells(x, 2).Value
      s_SpalteE = ws.Cells(x, 5).Value
      
     ->Werte-Strings durch Trennzeichen getrennt
     ->als Zeile in Datei schreiben
      Print #1, s_SpalteA & c_Trenn & s_SpalteB & c_Trenn & s_SpalteE
      
    Next
 ->Datei schliessen
  Close h
Aufraeumen:
  Set ws = Nothing
End Sub

'==============================
'Makro in Excel-Datei speichern
'==============================
'a) neue Excel-Datei anlegen
'b) neue Excel-Datei speichern als z.B.
'   Excel_Spalte_ABE_InTextdatei.xls
'c) mit Alt+F11 VB-Editor öffnen
'd) im Projekt-Fenster
'   VBAProject(Excel_Spalte_ABE_InTextdatei.xls)
'   mit rechter Maustaste selektieren -> Einfügen -> Modul
'e) Das Makro in das Modul-Fenster
'   Excel_Spalte_ABE_InTextdatei.xls-[Modul1(Code)]
'   kopieren
'f) ggf. die Konstanten c_Path und c_Filename anpassen
'g) mit Alt+S speichern
'h) mit Alt+Q VB-Editor schliessen
'i) Excel_Spalte_ABE_InTextdatei.xls schliessen

'==============================
'Makro anwenden
'==============================
'a) Excel_Spalte_ABE_InTextdatei.xls öffnen
'b) zu bearbeitende Excel-Mappe öffnen
'   (muß im Vordergrund stehen)
'c) mit Alt+F8 Makros aufrufen
'd) Spalte_ABE_InTextdatei selektieren -> ausführen
'   (= Doppelklick auf Spalte_ABE_InTextdatei)
'e) Ergebnis begutachten :)

Gruß Matjes :)
 
  • #5
ein kleine veränderung wäre noch gut wenn er die erste zeile nicht mitauslesen würde weil da überschriften drin stehen wie kann ich das noch ändern?

Danke und Gruß

mr.ant
 
  • #6
Hallo mr.ant,

ändere
Code:
For x = 1 To l_maxzeile
in
Code:
For x = 2 To l_maxzeile

Gruß Matjes :)
 
Thema:

Makro exelspalten in txt datei exportieren

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben