September 21, 2020, 05:41:15

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Makro zum Aufruf anderer Excel-Datei und Bearbeitung

Begonnen von Ciesto, Februar 26, 2011, 23:12:57

⏪ vorheriges - nächstes ⏩

Ciesto

Februar 26, 2011, 23:12:57 Letzte Bearbeitung: Februar 27, 2011, 01:35:03 von Ciesto
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


database

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

Ciesto

Bei folgender Zeile passiert es:

Sheets("Daten").Select

database

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.


Ciesto

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.

database

Hallo,

entsteht der Fehler in der gleichen Zeile oder beim Auswählen der Spalten?

Ciesto


database

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

Ciesto

Februar 27, 2011, 17:16:34 #8 Letzte Bearbeitung: Februar 27, 2011, 17:18:45 von Ciesto
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