Clever-Excel-Forum

Normale Version: Formatierung ändern VBA
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe ein Makro welches mir als Output mehrere Dateien in einem Ordner (die Ordnerbezeichnung setzt aus dem heutigen Datum (JJJJMMDD) zusammen)  ausgibt.  Zwei dieser Dateien (NameA.csv und NameB.csv) müsste ich entgegen der Logik des bestehenden Makros anpassen. 

Ich müsste nun die Formatierung der Spalten in NameA.csv 4 und 5 (sprich D und E) und in NameB.csv die Spalte 8 (H) ändern. Und zwar sollen die Nachkommastellen nicht mehr durch ein Komma, sondern durch einen Punkt getrennt werden.

Ich mag den bestehenden Code ungerne anfassen weil er recht komplex aussieht  Blush 
Habe das bis dato immer mit einem Query gelöst und dann die genannten Spalten im Bearbeitungsmodus umformatiert (in Text formatiert und , durch . ersetzt).

Könnte man das mit den oben stehenden Informationen an den bestehenden Code anfügen, ohne diesen zu kennen?

Beste Grüße
Leo
Hallöchen,

Zitat:Könnte man das mit den oben stehenden Informationen an den bestehenden Code anfügen, ohne diesen zu kennen?

jein.

Wenn es mit Suchen & Ersetzen geht, dann zeichne den Code auf und hänge ihn an oder packe ihn dahin wo immer es passt.
Hallo =)

ja, das hatte ich mir auch überlegt. Problem dabei ist das ich dann (ohne den aufgenommenen Code anzupassen) nicht flexibel bin, was den Ordnerzugriff an geht. 
ich müsste also noch i-wie umsetzen das Suchen und Ersetzen immer nur auf den aktuellsten Ordner angewendet wird und dann mal schauen an welcher Stelle ich das im bestehenden Code unterbringen kann Blush

Unten beispielhaft der Code für eine Datei (NameA.csv).

Code:
Sub Makro1()
'
' Makro1 Makro
'

'
    Application.CutCopyMode = False
    ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$H$942"), , xlYes).Name = _
        "Tabelle1"
    Range("Tabelle1[#All]").Select
    Application.CutCopyMode = False
    ActiveWorkbook.Queries.Add Name:="Tabelle1", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Quelle = Excel.CurrentWorkbook(){[Name=""Tabelle1""]}[Content]," & Chr(13) & "" & Chr(10) & "    #""Geänderter Typ"" = Table.TransformColumnTypes(Quelle,{{""LIEGENSCHAFT_NUMMER"", Int64.Type}, {""KOSTENART_TITEL_NUMMER"", Int64.Type}, {""ABRECHNUNGSJAHR"", Int64.Type}, {""JAHRESBUDGET"", type text}, {""ARBEITSBUDGET"", type text}, {""JAHRESBUDGET_TXT"", type text}, {""ARBEITSBUDGET_TX" & _
        "T"", type any}, {""interne Anmerkung "", type any}})," & Chr(13) & "" & Chr(10) & "    #""Ersetzter Wert"" = Table.ReplaceValue(#""Geänderter Typ"","","",""."",Replacer.ReplaceText,{""JAHRESBUDGET"", ""ARBEITSBUDGET""})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Ersetzter Wert"""
    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Tabelle1;Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [Tabelle1]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Tabelle1_2"
        .Refresh BackgroundQuery:=False
    End With
    Sheets("REMIS18").Select
    ActiveWindow.SelectedSheets.Delete
    Sheets("Tabelle1").Select
    Sheets("Tabelle1").Name = "NameA"
    ChDir "C:\Users\NachnameName\Desktop\Name\Output\20200310"
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Users\NachnameName\Desktop\Name\Output\20200310\NameA.csv", FileFormat:= _
        xlCSV, CreateBackup:=False
    ActiveWindow.Close
End Sub

Beste Grüße
Leo