2017-02-24 8 views
0

Ich habe Code, der Access-Tabellen in .csv exportiert. Ich versuche jedoch nicht, die Spalten nach dem Export automatisch zu füllen. Ich bekomme eine "Objektvariable oder mit Blockvariable nicht gesetzt".Autofit-Spalten CSV-Datei vba

Ist es auch möglich, mpulptiple csv-Dateien zu öffnen und automatisch zu bearbeiten?

Unten ist der Code, ich schätze jede Hilfe, die Sie geben können.

Function AutoFits() 

Dim ObjFSO As Object 
Dim ws As Worksheet 

Set ObjFSO = CreateObject("scripting.filesystemobject") 
     ObjFSO.Opentextfile "C:\filename.csv" 
     With ObjFSO 

     ws("sheet1").Select 

      .Columns("A:O").Select 
      .Selection.Columns.AutoFit 
      .activeworkbook.Save 

     End With 

     ObjFSO.Quit 
     Set ObjFSO = Nothing 

End Function 
+0

Ihre With-Anweisung an das Scripting-Objekt bezieht, und Sie versuchen Blatt basierend Eigenschaften auf dieses Objekt zu setzen. Daher der Fehler – Aeneas

Antwort

0

Dies sollte unten funktionieren. Bitte beachten Sie, dass Sie keine Formatierung (einschließlich Spaltenbreiten) beibehalten können, wenn Sie sie als CSV-Datei speichern, sodass Sie eine XLS-Datei speichern müssen.

Sub AutoFits() 

    Application.Workbooks.Open "C:\filename.csv" 

    ActiveSheet.Columns("A:O").Select 

    Selection.EntireColumn.AutoFit 

    ActiveWorkbook.SaveAs "C:\filename.xls" 

End Sub 

und eine Schleife durch alle CSV-Dateien in einem Verzeichnis ...

Function AutoFitsAllFiles() 
    Dim file As String 

    file = Dir("c:\*.csv") 

    While (file <> "") 
    Application.Workbooks.Open "c:\" & file 

    ActiveSheet.Columns("A:O").Select 

    Selection.EntireColumn.AutoFit 

    ActiveWorkbook.SaveAs "c:\" & Left(file, Len(file) - 3) & "xls" 

    ActiveWorkbook.Close False 

    file = Dir 
    Wend 


End Function