Hallo,
kurze Problembeschreibung:
ich habe eine Anzahl X an XLS-Dateien die unter einem bestimmten Pfad abgelegt sind.
Diese werden mit allen Worksheets in Access einegelesen.
Problem ist, dass die Methode TransferSpreadsheet zum Teil die letzte Spalte eines Worksheets nicht erkennt (auch manueller Import beinhaltet dieses Problem).
Nun habe ich manuell in einer Test-XLS alle Spalten den AutoFit gesetzt ... danach funktioniert der Import ohne Probleme.
Jetzt möchte ich dies per VBA lösen - hier mein Ansatz:
f = Pfad + Dateiname
set xlsapp = createObject("Excel.Application")
xlsapp.Workbooks.open f
for each Blatt In xlsapp.activeWorkbook.Sheet
.... AutoFit
.... XLS-Datei Speichern
next
Gesucht ist die entsprechende Aktion für den AutoFIt der Spalten und das Speichern der Datei.
Hi,
probiers mal damit:
Option Compare Database
Option Explicit
Sub format_excel()
Dim xlsapp As Excel.Application, path As String
Set xlsapp = CreateObject("Excel.Application")
path = "Pfad\Mappe1.xls"
xlsapp.Workbooks.Open path
Cells.Select
Cells.EntireColumn.AutoFit
ChDir "Pfad"
ActiveWorkbook.SaveAs Filename:= _
"Pfad", FileFormat:=xlNormal _
, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
xlsapp.Workbooks.Close 'Excel wird geschlossen!!! sonst läuft der Prozess weiter und Excel lässt sich nicht mehr öffnen
End Sub
*Für Pfad selbstverständlich den Pfad der Exceldateien angeben. Für Mappe1.xls natürlich den Namen deiner Exceldatei. ;-)
Grüße
Basti
EDIT: Ich weis nicht wie deine ganzen Excel Dateien heißen aber wenn sie zB Mappe1, Mappe2, usw heißen, dann pack das ganze ding oben in eine for-Schleife und schreib als Dateinamen in abhängigkeit der schleife auf:
for i = 1 to 5 step 1
Dateiname = "Mappe" & i
[...] s.o. [...]
next i