44 Aufrufe
Gefragt in Tabellenkalkulation von peter-pfeiffer Einsteiger_in (26 Punkte)
Guten Tag,

ich habe folgendes Problem:

Ich habe in einem Ordner (C:\DS\Export) Excel-Dateien, welche den Export einer Appliktion dartsellen.

Dieser Export wird alle 7 Tage automatisert ausgeführt.

Die Excel-Dateien werden in einem Dokument eingebuden.

Eine weitere Bearbeitung der Excel-Dateien in dem Dokument ist nicht möglich, ich kann dort die Dateien nur 1:1 einbinden.

Alle Dateien haben unterschiedliche Splaten und am Ende eine Spalte "ONC".

Genau diese Spalte möchte ich aber nicht in meinem Dokument haben.

Ich suche also eine Funkion, die:

1.) Alle Datein in dem Ordner öffnet

2.) Die Spalte "ONC" löscht (das ist aber nicht immer die gleiche Spalte)

3.) Die Datei wieder schliesst

Das ganze sollte nach dem wöchentlicen Export der Applikation automatisiert erfolgen.

Kann mir hier jemand helfen?

Vielen Dank für jeden Tip und eine hoffentlich klmatisierten Arbeitsplatz!

Peter Pfeiffer

3 Antworten

0 Punkte
Beantwortet von m-o Profi (15.8k Punkte)

Hallo Peter,

einen automatischen Start z.B. alle 7 Tage kann ich dir nicht anbieten. Du müsstest nur eine Excel-Datei öffnen und wieder schließen.

Ich gehe davon aus, dass die Überschriften in der 1. Zeile stehen und die Überschrift auch nur "ONC" lautet.

Kopiere das folgende Makro in das VBA-Projekt einer Arbeitsmappe:

Private Sub Workbook_Open()

Dim strPfad As String
Dim strDatei As String
Dim s As Long
Dim w As Long

'Bildschirmaktualisierung ausschalten:
Application.ScreenUpdating = False

'Pfad in dem die zu bearbeitenden Dateien stehen
strPfad = "C:\DS\Export\"

'nur Dateien mit Endung .xlsx öffnen
strDatei = Dir(strPfad & "*.xlsx")

'Schleife zum Einlesen der einzelnen Dateien aus dem Verzeichnis
Do While strDatei <> ""
  'Datei nur bearbeiten, wenn es nicht diese Datei ist
  If ThisWorkbook.Name <> strDatei Then
      'Datei öffnen
      Workbooks.Open Filename:=strPfad & strDatei
      With Workbooks(strDatei)
        'alle Arbeitsblätter der geöffneten Datei durchlaufen
        For w = 1 To .Worksheets.Count
           With .Worksheets(w)
              'Blattspalten von hinten nach vorne durchlaufen
              For s = .Cells(1, Columns.Count).End(xlToLeft).Column To 1 Step -1
                  'Überschrift in ONC in Zeile 1 suchen
                  If .Cells(1, s).Value = "ONC" Then
                      'falls gefunden, ganz Spalte löschen
                      .Columns(s).EntireColumn.Delete
                      'und Schleife verlassen
                      Exit For
                   End If
              Next s
            End With
         Next w
         'geöffnete Datei speichern und schließen
         .Close SaveChanges:=True
      End With
  End If
 strDatei = Dir
Loop

'Bildschirmaktualisierung einschalten:
Application.ScreenUpdating = True
'Abschlussmeldung
MsgBox "Die Spalten ONC wurden gelöscht", 48, "Hinweis"

End Sub

Speichere die Mappe ab. Beim Öffnen der Mappe wird das Makro automatisch ausgeführt. Nachdem alle Dateien in dem Verzeichnis geöffnet wurden, erscheint ein Abschlussmeldung. Danach kannst du die Mappe wieder schließen.

Es werden nur Excel-Dateien mit der Eindung .xlsx geöffnet. Können auch andere Endungen vorhanden sein, so muss das Makro entsprechend angepasst werden.

Probiere das aber erst einmal mit ein paar Testdateien aus.

Gruß

M.O.

0 Punkte
Beantwortet von peter-pfeiffer Einsteiger_in (26 Punkte)
Guten Morgen,

tausend Dank!!!!!

Hat perfekt funktioniert.

Liebe Grüße

Peter Pfeiffer
0 Punkte
Beantwortet von m-o Profi (15.8k Punkte)
Hallo Peter,

gern geschehen.

Gruß

M.O.
...