Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Excel-File (Sheets) bearbeiten und speichern

Begonnen von kiko19, November 15, 2011, 23:00:46

⏪ vorheriges - nächstes ⏩

kiko19

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.

Basti123

#1
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