Problem beim Umwandeln in eine Textdatei

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von deedee.

    Problem beim Umwandeln in eine Textdatei

    Ich versuche gerade mit Hilfe eines VBA Makros ein Arbeitsblatt in eine Textdatei mit dem Format .depa umzuwandeln.

    Das Ergebnis soll danach so aussehen:
    Typ_Applikation=WG-Formular
    Version_Druckapplikation=2.0.4
    Version_Interface=2.0.3
    Software=Beispiel-Datei
    [Allgemeine_Angaben]
    Objekt_Typ=WBS 70
    Objekt_PLZ=01234
    Objekt_Ort=Musterstadt
    Objekt_Strasse=Muster Weg 1
    Objekt_Gebaeudeteil=Hauptgebäude
    Baujahr_Gebaeude=1970
    Baujahr_Anlage=1970
    AN=1580
    Anzahl_Wohneinheiten=1
    Erstellungsdatum=39476
    GueltigBis=43129
    Ausstellgrund_Neubau=0
    Ausstellgrund_Vermietung=1
    Ausstellgrund_Modernisierung=1
    Ausstellgrund_Sonstiges=0
    Ermittlung_durch_Energiebedarf=0
    Ermittlung_durch_Energieverbrauch=1
    HinweiseZusatzInfos=0
    Aussteller_AusgabeArt=0
    Datenerhebung_Eigentuemer=0
    Datenerhebung_Aussteller=1
    Aussteller_Firma=Muster Ag
    Aussteller_Vorname_Name=M. Mustermann
    Aussteller_Strasse_Nr=Muster Straße 1
    Aussteller_PLZ_Ort=01234 Musterstadt
    DenaAusstellerNr=0
    Wohnflaeche=1580
    AusstellerLogo_Pfad=
    AusstellerUnterschrift_Pfad=
    Aussteller_AusgabeUnterschrift=0
    GebaeudeFoto_Pfad=
    [Bewertungsgroessen]
    [Energiebedarf]
    [Energieverbrauch]
    Energieverbrauchskennwert=77,79
    Warmwasser_enthalten=1
    Wird_gekuehlt=0
    Energieverbrauch_Energietraeger_1=Braunkohle
    ...
    Hierbei bin ich so vorgegangen, dass ich drei Spalten verwendet hatte, wobei in der ersten Spalte die Größenbezeichnungen
    ...
    [Allgemeine_Angaben]
    Objekt_Typ=
    Objekt_PLZ=
    Objekt_Ort=
    Objekt_Strasse=
    Objekt_Gebaeudeteil=
    Baujahr_Gebaeude=
    Baujahr_Anlage=
    AN=
    Anzahl_Wohneinheiten=
    Erstellungsdatum=
    GueltigBis=
    Ausstellgrund_Neubau=
    Ausstellgrund_Vermietung=
    Ausstellgrund_Modernisierung=
    ...
    und in der zweiten Spalte die Werte stehen, welche an anderer stelle eingetragen werden
    ...

    WBS 70
    01234
    Musterstadt
    Muster Weg 1
    Hauptgebäude
    1970
    1970
    1580
    1
    39476
    43129
    0
    1
    1
    ...
    in der dritten Spalte werden die beiden ersten Spalten mit hilfe eines Makros in die benötigte Form gebracht.
    Sub Umwandlungsmakro()

    Dim i As Variant
    i = 7
    Sheets("Werteerfassung").Select
    Do
    If Not Cells(i, 1).Value = "" Then
    Cells(i, 3).Value = Cells(i, 1).Value & Cells(i, 2).Value
    Else
    Exit Do
    End If
    i = i + 1
    Loop

    End sub
    Abschließend kopiere ich die dritte Spalte auf ein neues Arbeitsblatt und speicher dieses mit diesem Makro,
    Private Sub CommandButton1_Click()
    Dim pfad As String
    Dim name As String
    Dim var_Speichere As Variant
    Dim str_FileName As String

    Call Umwandlungsmakro

    pfad = Application.ActiveWorkbook.Path
    Worksheets("Datenblatt_Wertesammlung").Activate
    name = Worksheets("Datenblatt_Wertesammlung").Cells(5, 2).Value 'hier wird der Straßenname von einer Extraseite ausgelesen.
    Worksheets("Datenblatt_Ausgabe").Activate
    ActiveWorkbook.SaveAs Filename:=pfad & "\" & name & ".depa", FileFormat:=xlText, CreateBackup:=False
    Worksheets("Start").Activate

    End Sub
    das Problem, welches dabei entsteht ist der Energieverbrauchskennwert welcher normalerweise so
    Energieverbrauchskennwert=77,79
    aussehen sollte, in der abschließenden .depa Datei jedoch in Anführungszeichen steht
    "Energieverbrauchskennwert=77,79"
    Jede Zelle, auf die für die Erstellung dieses Wertes zugegriffen wird, ist als Zahl formatiert. Auf dem abzuspeicherndem Datenblatt ist jede Zelle gleich formatiert, dennoch wird diese eine Zelle anders abgespeichert, als der Rest.

    Außerdem tritt dieser Fehler nicht auf, wenn man das Arbeitsblatt von Hand abspeichert, obwohl das oben beschriebene Speichermakro nix weiter ist als der aufgezeichnete Speichervorgang nur mit variablem Speicherpfad und -namen.

    Ehrlich gesagt bin ich mit meinem Latein am Ende.



    Ist es möglich per Makro die Anführungszeichen in der Textdatei zu ändern, ohne diese in Excel zu importieren? (lustigerweise werden die Anführungszeichen nicht mit importiert, sondern entstehen nur beim Abspeichern mit diesem Makro)





    Als alternative Abspeichervariante habe ich noch folgendes Makro verwendet, welches die Auswahl des Speicherortes und des Namens ermöglichen sollte:
    Private Sub CommandButton1_Click()
    Dim pfad As String
    Dim name As String
    Dim var_Speichere As Variant
    Dim str_FileName As String

    pfad = Application.ActiveWorkbook.Path
    Worksheets("Datenblatt_Wertesammlung").Activate
    name = Worksheets("Datenblatt_Wertesammlung").Cells(5, 2).Value
    Worksheets("Datenblatt_Ausgabe").Activate

    str_FileName = name & ".depa"
    var_Speichere = Application.GetSaveAsFilename( _
    InitialFilename:=str_FileName, _
    FileFilter:="Text (Tabstop getrennt) (*.depa), *.depa", _
    Title:="Datei speichern unter...")
    If var_Speichere = False Then
    Worksheets("Start").Activate
    frmEnEV.Hide
    frmMain.Show
    Exit Sub
    End If
    ActiveWorkbook.SaveAs var_Speichere
    Worksheets("Start").Activate
    frmEnEV.Hide
    frmMain.Show
    End Sub
    Unter verwendung dieses Makros schafft es Excel die komplette Datei sammt Datenbank, Tabellenblättern, Formatierungen und VBA Makros in eine Textdatei umzuwandeln, welche im Editor zwar nur aus irgendwelchen Sonderzeichen besteht, so groß ist wie die Orginaldatei und bei einem Tabstopgetrennten Import die alte Arbeitsmappe wieder herstellt. Obwohl laut den Angaben Excels dies nicht möglich ist.

    Wie kann ich dieses Makro so umändern, dass nur ein Arbeitsblatt abgespeichert wird?



    MfG Shisu