Microsoft Excel

Herbers Excel/VBA-Archiv

VBA Excel Dateien umwandeln, anpassen, speichern

Betrifft: VBA Excel Dateien umwandeln, anpassen, speichern von: Danny
Geschrieben am: 03.09.2014 16:56:12

Hallo,

ich bin VBA Neuling und brauche ein paar Tipps zur Lösung eines Problems.

Ich habe ziemlich viele Dateien die ich umwandeln und anpassen möchte.

Die Dateiennamen setzten sich aus einem ISO-Code (der sich immer unterscheidet) und einem gleichem Namen zusammen und liegen alle in einem Ordner.

Ich möchte mit den Dateien folgendes machen:

1. in jeder Datei soll zunächst die erste Zeile gelöscht werden
2. dann soll die Datei als .csv (Trennzeichen getrennt gespeichert werden).
3. anschließend soll die Datei in Word geöffnet werden
4. dann sollen in der Word datei alle ; durch ein , ersetzt werden
5. alle Dateien sollen wieder als .csv (Trennzeichen getrennt) in einem andern Ordner gepeichert werden

Hat jemand ein paar Lösungsansätze mittels VBA oder Makro für mich?

Viele Grüße

Danny

  

Betrifft: AW: VBA Excel Dateien umwandeln, anpassen, speichern von: Rudi Maintaire
Geschrieben am: 03.09.2014 17:10:30

Hallo,
wozu 3 und 4? Das kann man doch direkt erledigen.

Als Ansatz:

Sub Dateien()
  Dim sFile As String, wkb As Workbook, wks As Worksheet
  Const sPfad As String = "c:\test\"
  sFile = Dir(sPfad & "*.xlsx")
  Do While sFile <> ""
    Set wkb = Workbooks.Open(sPfad & sFile)
    Set wks = wkb.Sheets(1)
    wks.Rows(1).Delete
    prcCreateCSV
    wkb.Close False
    sFile = Dir
  Loop
End Sub


Public Sub prcCreateCSV(wks)
  Dim intFileNumber As Integer
  Dim lngRow As Long
  Dim vntArray As Variant
  Dim intItem As Integer
  Dim strText As String
  Dim i As Integer
  Const strSep As String = ","
  
  With wks.UsedRange
    For lngRow = 1 To .Rows.Count
      vntArray = .Cells(lngRow, 1).Resize(, .Columns.Count)
      vntArray = WorksheetFunction.Transpose(WorksheetFunction.Transpose(vntArray))
      If strText = "" Then
        strText = Join(vntArray, strSep)
      Else
        strText = strText _
            & vbCrLf _
            & Join(vntArray, strSep)
      End If
    Next
  End With
  
  intFileNumber = FreeFile
  With wks.Parent
    Open _
      .Path & "\" _
      & Left$(.Name, InStrRev(.Name, ".") - 1) _
      & "_" & ActiveSheet.Name _
      & ".csv" _
      For Output As #intFileNumber
  End With
  Print #intFileNumber, strText
  Close #intFileNumber
  
End Sub

Gruß
Rudi


  

Betrifft: AW: VBA Excel Dateien umwandeln, anpassen, speichern von: Danny
Geschrieben am: 03.09.2014 19:24:00

Hi Rudi,

Danke für deine Antwort. Das erleichtert mir sicher schonmal einiges.

Ich verstehe leider nicht genau was du mit direkt erledigen meinst. Also alles manuell ändern?

Die Reihenfolge hatte ich deshalb gewählt:

3. Vorher konnte ich die Datei nicht in Word öffnen um:


4. Über die suchen und ersetzen Funktion die Semikolons gegen Kommata auszutauschen.

Nur scheint mir das für die Vielzahl der Dateien etwas zu mühselig.

Aber schonmal vielen Dank ich komme leider erst morgen dazu es ausgiebig zu testen.

Gruß
Danny


 

Beiträge aus den Excel-Beispielen zum Thema "VBA Excel Dateien umwandeln, anpassen, speichern"