Access-o-Mania

Office-Forum => Microsoft Excel => Thema gestartet von: Ciesto am Februar 26, 2011, 23:12:57

Titel: Makro zum Aufruf anderer Excel-Datei und Bearbeitung
Beitrag von: Ciesto am Februar 26, 2011, 23:12:57
Hallo Leute,

ich benötige mal Eure fachmännische Hilfe zur folgender Ausgangssituation:

Excel-Datei A: Diese Datei wird mir einmal im Monat aus SAP bereit gestellt. Sie umfaßt insg. immer 48 Spalten und eine variable Anzahl an Zeilen. Von diesen 48 Spalten werden jedoch nur 18 Spalten benötigt. Die Anordnung der Spalten ist immer gleich.

Excel Datei B: In dieser Datei gibt es 12 Tabellenblätter (Januar bis Dezember). Auf jedem Blatt ist die selbe Grundtabelle. Zeile 1 beinhaltet die Spaltenüberschriften. Ab Zeile zwei kommen die Daten. Ab Spalte 19 kommen verschiedene Spalten mit div. umfangreichen Berechnungen.

Jetzt zu meinem Anliegen. Ich suche eine Möglichkeit, um per "Knopfdruck" (also Makro) aus der Datei B heraus, die Datei A aufzurufen, die nicht benötigten Spalten zu entfernen und anschließend in die übrigen Daten (abzüglich der ersten Zeile, da dies die Überschriften sind) in meine Datei B wieder einzufügen. Der Bereich, in den die Daten in Datei B eingefügt werden ist fest definiert: Von A2:R65000.

Hat irgend jemand eine Idee? Ich wäre Euch da echt dankbar!

Gruß
Ciesto

edit: Ich habe mal noch ein wenig gegoogelt und habe nun folgenden Code:

Private Sub CommandButton1_Click()
x = Application.GetOpenFilename()
If x = False Then Exit Sub
Set xlWB = Workbooks.Open(x)
Sheets("Daten").Select
Range("B:B,D:D,E:E,M:M,N:N,O:O,P:P,Q:Q,R:R,S:S,T:T,U:U,X:X,Y:Y,Z:Z,AA:AA,AB:AB,AC:AC,AF:BI").Select
    Selection.Delete Shift:=xlToLeft
    Range("A2:M1000").Select
    Selection.Copy
    Windows("Verrechnete Aufarbeitungen von 01.2011 bis 12.2011.XLS").Activate
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub


Allerdings kommt immer ein Laufzeitfehle '1004' Anwendungs- oder Objektdefinierter Fehler

Titel: Re: Makro zum Aufruf anderer Excel-Datei und Bearbeitung
Beitrag von: database am Februar 27, 2011, 09:45:13
Hallo,

ZitatAllerdings kommt immer ein Laufzeitfehle '1004' Anwendungs- oder Objektdefinierter Fehler

...und in welcher Zeile passiert das?
Setz mal einen Haltepunkt aufs Ereignis und fahre den Code mit F8 schrittweise durch
Titel: Re: Makro zum Aufruf anderer Excel-Datei und Bearbeitung
Beitrag von: Ciesto am Februar 27, 2011, 13:22:58
Bei folgender Zeile passiert es:

Sheets("Daten").Select
Titel: Re: Makro zum Aufruf anderer Excel-Datei und Bearbeitung
Beitrag von: database am Februar 27, 2011, 14:35:57
Versuch mal

ActiveWorkbook.Sheets("Daten").Select

der fehler liegt sicher daran, dass das Blatt nicht richtig angesprochen wird.
Sheet allein geht nur wenn der Code in Excel läuft.

Titel: Re: Makro zum Aufruf anderer Excel-Datei und Bearbeitung
Beitrag von: Ciesto am Februar 27, 2011, 15:16:51
Zitat von: database am Februar 27, 2011, 14:35:57
Versuch mal

ActiveWorkbook.Sheets("Daten").Select

der fehler liegt sicher daran, dass das Blatt nicht richtig angesprochen wird.
Sheet allein geht nur wenn der Code in Excel läuft.




Nun erschein folgender Fehler:

'Laufzeitfehler 1004'

Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden.
Titel: Re: Makro zum Aufruf anderer Excel-Datei und Bearbeitung
Beitrag von: database am Februar 27, 2011, 15:51:18
Hallo,

entsteht der Fehler in der gleichen Zeile oder beim Auswählen der Spalten?
Titel: Re: Makro zum Aufruf anderer Excel-Datei und Bearbeitung
Beitrag von: Ciesto am Februar 27, 2011, 16:01:39
Beim Auswählen der Spalten .
Titel: Re: Makro zum Aufruf anderer Excel-Datei und Bearbeitung
Beitrag von: database am Februar 27, 2011, 16:28:20
Versuch dann da mal:

ActiveSheet.Range("B:B,D:D,E:E,M:M,N:N,O:O,P:P,Q:Q,R:R,S:S,T:T,U:U,X:X,Y:Y,Z:Z,AA:AA,AB:AB,AC:AC,AF:BI").Select
Titel: Re: Makro zum Aufruf anderer Excel-Datei und Bearbeitung
Beitrag von: Ciesto am Februar 27, 2011, 17:16:34
Danke database!

Jetzt hat's geklappt. Supi...!


edit: Für alle, die es interessiert, hier mal der komplette Code, so wie ich ihn jetzt verwende:

Private Sub CommandButton1_Click()
x = Application.GetOpenFilename()
If x = False Then Exit Sub
Set xlWB = Workbooks.Open(x)
ActiveWorkbook.Sheets("Daten").Select
ActiveSheet.Range("B:B,C:C,D:D,E:E,M:M,N:N,O:O,P:P,Q:Q,R:R,S:S,T:T,U:U,X:X,Y:Y,Z:Z,AA:AA,AB:AB,AC:AC,AF:BI").Select
    Selection.Delete Shift:=xlToLeft
ActiveSheet.Range("A2:L1000").Select
    Selection.Copy
    Windows("Verrechnete Aufarbeitungen von 01.2011 bis 12.2011.XLS").Activate
    ActiveWorkbook.Sheets("Januar 2011").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub