3.6k Aufrufe
Gefragt in Tabellenkalkulation von finger59 Experte (1.3k Punkte)
Hallo Excel-Fan-Gemeinde,
leider kriege ich im Moment die Kurve bei einem Makro nicht, bei dem mir Daten von einer Datei in eine andere übertragen werden soll.

Bisher habe ich:
Private Sub CommandButton1_Click()

Workbooks.Open Filename:= _
"G:\Fertigung\Abrechnung zusätzliche Akkordminuten 2010\Akkordminuten.xls"

Workbooks("Vorlage für Gruppe 02a2test1j").Sheets("Gruppe").Activate
Range("fa12:fm61").Copy
Workbooks("Akkordminuten").Sheets("Daten").Activate
Range("A65536").End(xlUp).Offset(1, 0).Select


Diese Befehle führten dann zu Fehlermeldungen:

die PasteSpecial-Methode des Ranges-Objectes konnte nicht ausgeführt werden
Range("A65536").End(xlUp).Offset(1, 0).Select.PasteSpecial xlValues

Object erforderlich
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


Leider habe ich mit den o.g. Befehlen es nicht hingekriegt, die Daten in Akkordminuten hineinzuschreiben.

In der Hoffnung das mir jemand helfen kann meinen Fehler zu beseitigen, bedanke ich mich bei allen, die Ihr Interesse an meiner Anfrage gezeigt haben und wünsche noch einen schönen Tag...
LG Helmut

8 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Helmut,

ungetestet.

Option Explicit

Private Sub CommandButton1_Click()
Dim loletzte As Long
loletzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Workbooks.Open Filename:= _
"G:\Fertigung\Abrechnung zusätzliche Akkordminuten 2010\Akkordminuten.xls"
With Workbooks("Akkordminuten").Sheets("Daten")
loletzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, .Rows.Count)
Workbooks("Vorlage für Gruppe 02a2test1j").Sheets("Gruppe").Range("fa12:fm61").Copy .Cells(loletzte + 1, 1)
End With
End Sub


Gruß Hajo
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Hajo,

erstmal vielen Dank für Deinen Code.

Das positive im Moment ist das er ohne Fehlermeldung durchläuft, aber das negative ist... es erscheinen dennoch keine Werte in der Datei Akkordminuten - Arbeitsblatt - Daten - (das ist z.Zt. aber auch das einzige Arbeitsblatt dort).

Was mir bei meinen Versuchen vorher aufgefallen war, da habe ich einfach mal den Makrorekorder benutzt und das Makro zum kopieren und einfügen aufgezeichnet.

Anschließend habe ich das aufgezeichnete Makro durchlaufen lassen und auch da wurden mir keine Werte direkt in Akkordminuten eingetragen.

Frage: Kann es sein, daß es damit zusammenhängt, daß hier mein Excel die Daten erst in die Office-Zwischenablage schiebt und erst wenn ich das wiederum in dem Akkordminuten aufrufe, ich die Daten reingeschrieben bekomme?

Frage: Gibt es eine Möglichkeit diese Office-Zwischenablage anzusprechen - sprich nach dem Vorgang des Kopieren ab damit in dei Zwischenablage und anschließend in den Akkordminuten wieder raus damit oder gibt es für mich noch eine andere Lösung?

In der Hoffnung das Du oder natürlich jeder andere der eine Lösung hat- mir helfen kann(st).

Nochmals vielen Dank an Dich und an alle anderen Interessierten...
LG Helmut
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Helmut,

hast Du genau nach geschaut. Stehen vielleicht Formeln in den Zellen und Du möchtest nur die Werte übertragen? Die Formel müssten eingtragen sein.

Gruß Hjao
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Hajo,

aufgrund Deiner Anfrage habe ich mal meine Daten mit kopieren und Inhalte einfügen - Werte in einen anderen Bereich der Datei Vorgabe der Gruppe 02atest1j reingestellt und den Bereich in Deinem Code entsprechend auf Fp1:gb50 geändert.
Aber auch hier passiert das gleiche....
Das Makro läuft ohne Fehler, aber leider auch ohne Datenübertragung durch.

In dem Bereich fa12:fm61 sind Formeln drin (z.B. = DK12).

Rüberkopiert haben möchte ich natürlich nur die Werte, die sich aus der Formel ergibt - ggf. auch Null-Werte kopieren falls kein Wert vorhanden ist). In Akkordminuten ist lediglich die entsprechende Formatierung drin (wie Zahlen oder Datum).

Irgendwie beschleicht mich jedoch das Gefühl, daß er mir da mit der Zwischenablage reinspielt.

Ich danke Dir aber für den Denkanstoß, da ich es nur mit Werten vorher so nicht probiert habe.

Lg.. Helmut
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Helmut,

was u nicht per Hand hinbekommst klappt auch nicht per VBA.Für Deine Aufgabe wäre es folgender Code,

Option Explicit

Private Sub CommandButton1_Click()
Dim loletzte As Long
loletzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
Workbooks.Open Filename:= _
"G:\Fertigung\Abrechnung zusätzliche Akkordminuten 2010\Akkordminuten.xls"
With Workbooks("Akkordminuten").Sheets("Daten")
loletzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(Rows.Count, 1).End(xlUp).Row, .Rows.Count)
Workbooks("Vorlage für Gruppe 02a2test1j").Sheets("Gruppe").Range("fa12:fm61").Copy
.Cells(loletzte + 1, 1).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End With
End Sub


Gruß Hajo
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Nachtrag zu meiner vorherigen Infos...

Hallo Hajo und natürlich die anderen Interessierten,

ich habe gerade einfach mal versucht die Daten aus dem Bereich fa12:fm61 ohne Makros sondern einfach mit den normalen Befehlen kopieren - in geöffnete Akkordminuten gehen -
und wollte dort die Daten einfügen lassen, was aber selbst so nicht geht.

Ich muss auch hier den Umweg über die Zwischenablage nehmen um die Daten da überhaupt rein zu bekommen.

Somit scheint mir klar zu sein, warum Dein Code nicht greift.

Frage gibt es irgendwo Infos wie man diesen Umweg umgehen kann oder eine Lösung wie man diese Zwischenablage per Programm ansteuern kann?

Vielen Dank an alle.... LG Helmut
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Hajo,

vielen, vielen Dank... die Daten sind angekommen... :-)))))

Zwar habe ich jetzt noch das nächste Problem erhalten... er kopiert alle leeren Zellen mit und wenn ich den Schritt wiederhole, dann setzt er, obwohl vorher vielleicht nur zwei Zeilen mit Werten belegt war, in Zeile 51 an.

Aber da werde ich auch erst mal schauen ob ich dazu nicht auch was finden kann.
Falls nicht, dann werde ich mich mit einer erneuten Anfrage melden.

Was mir wohl bei Deinem Code aufgefallen ist, das der Code mit der Spalte EZ (als eine vor dem zu kopierenden Datenbereich) und FO (eine nach dem zu kopierenden Datenbereich) ansetzt.

Frage, war das Absicht und falls ja, könntest Du mir erklären, warum das dann gemacht wird - Hinweis wo es steht wäre schon genug... )

Nochmals vielen vielen Dank für Deine Infos und den Codes...
In diesem Sinne... have a nice Day... LG Helmut
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Helmut,

das mit den Spalten kann ich mir nicht erklären, ich habe egentlich Deinen Code als Grundlage genommen, da ich es nicht testen kann.
Ein Speichern hilft oft vor Erkennung des benutzen Bereiches.

Gruß Hajo
...