online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon finger59 vom 04.03.2022, 09:46 Options

Lösung

VBA-Daten übertragen

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


Antwort schreiben

Antwort 1 von Hajo_Zi vom 04.03.2022, 09:56 Options

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

Antwort 2 von finger59 vom 04.03.2022, 13:35 Options

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

Antwort 3 von Hajo_Zi vom 04.03.2022, 14:13 Options

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

Antwort 4 von finger59 vom 04.03.2022, 14:57 Options

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

Antwort 5 von Hajo_Zi vom 04.03.2022, 15:03 OptionsLösung

Lösung
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

Antwort 6 von finger59 vom 04.03.2022, 15:04 Options

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

Antwort 7 von finger59 vom 04.03.2022, 15:20 Options

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

Antwort 8 von Hajo_Zi vom 04.03.2022, 15:24 Options

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

Ähnliche Themen

Daten von UserForm in Kalender übertragen
--dlb--  23.03.2009 - 365 Hits - 10 Antworten

Daten aus Excel in ein Word Formular übertragen
kordesh  06.07.2009 - 321 Hits - 2 Antworten

VBA-Daten kopieren
finger59  09.07.2009 - 174 Hits - 2 Antworten

Daten aus mehrdimensionalem Datenfeld auslesen - VBA
Eleve  03.11.2009 - 193 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026