Hallo allerseits,
gleich vorweg: Ich bin ein VBA Autodidakt, der mit wenig know how und viel try und error an die Sache herangeht.
Ich möchte in der Datei 1 eine Range (A3:U3) kopieren und als Wert in eine andere Datei 2 einfügen.
Bis vor Kurzem hat es tadellos funktioniert. Nachdem ich die Dateien in einen anderen Ordner verschoben habe, aber nicht mehr.
Hab Schreibweise genau kontrolliert. Passt alles.
Bei der Recherche bin ich darauf gestoßen, dass es bei Worksheets.Open (wenn eine range kopiert wurde) einen bug im Excel gibt
https://support.microsoft.com/en-us/help/555263
Mit dem Vorschlag komme ich aber nicht weiter und auch nicht mit dem, was ich in diversen Foren nachgelesen habe.
Ich wäre sehr froh und dankbar für den erlösenden Tip
Ich hab folgenden Code:
Sub Einzel()
Sheets("Datei1").Select
Worksheets("Datei1).Range("A3:U3").Copy
With Worksheets("Datei1").Range("A5")
.PasteSpecial Paste:=xlValues ' Werte
End With
Application.CutCopyMode = False
Rows("5:5").Select
Worksheets("Test").Rows("5:5").Copy
Workbooks.Open filename:= _
"J:\FB-ALLE\ Datei2.xlsx"
End Sub
liebe Grüße
Stefan
Hallo,
vor Datei2 ist ein Leerzeichen ... gesehen ?
PS:
dein Link stellt keinen Fehler dar ... sondern das ganz normale Verhalten von Excel, wenn eine Datei geöffnet wird und die Shift-Taste ist gedrückt.
Die Lösung wäre auch ganz einfach ... lass einfach die Finger von der Tastatur.
Hallo
ich habe auch nicht alles verstanden was Microsoft da schreibt. Probier den Coce bitte mal wie unten aus.
Den Pfad stelle ich gerne ganz oben an den Anfang als Const Variable. Da kann man ihn leichter anpassen!
Workbook:Open setze ich auch an den Anfang, vor den Copy Befehl. Ist m.E. sicherer. Würde mich freuen wenn es so klappt.
Wohin du zum Schluss kopierst musst du bitte noch ergaenzen ...
mfg Gast 123
Code:
Option Explicit
Const sPfad = "J:\FB-ALLE\ Datei2.xlsx"
Sub Einzel()
Sheets("Datei1").Select
On Error GoTo OpenErr
Workbooks.Open Filename:=sPfad
Worksheets("Datei1").Range("A3:U3").Copy
With Worksheets("Datei1").Range("A5")
.PasteSpecial Paste:=xlValues ' Werte
End With
Application.CutCopyMode = False
Worksheets("Test").Rows("5:5").Copy
'Wohin wird jetzt kopiert???
Exit Sub
OpenErr: MsgBox "Fehler beim Öffnen aufgetreten"
End Sub
Hallo Sabina
du warst sehr aufmerksam!! Das Leerzeichen habe ich NICHT gesehen. Wie schön das es aufmerksame Kolleginnen gibt ....
mfg Gast 123
Hallo sabina,
danke für die Antwort.
Leerzeichen war nur ein Tippfehler (hab nicht den gesamten Pfad abgebildet - geht ja nur ums Prinzip)
Ad. Finger von der Tastatur nehmen: In Ermangelung von vba Kenntnisse gehe ich bisweilen so vor, dass ich ein Makro aufzeichne und dann den vba Text übernehme bzw abwandle.
Ich weiß leider nicht einen alternativen Code um eine bestimme range zu kopieren....
Das Problem ist ja erst beim Versuch des Öffnens des Worksbooks aufgetreten.... da hänge ich noch
LG
Stefan
Hallo Gast 123,
Vielen Dank für den Code.
Werde ich heute noch ausprobieren. Muss jetzt weg, geb später noch eine Rückmeldung
LG einstweilen
Stefan
so....habs getestet, es tut aber leider noch nicht was es soll:
Ich hab den Code angepasst und 2 Varianten ausprobiert:
V1: Einmal den Teil, der fett ist, nach unten geschoben: Ich bekomme aber nur die Fehlermeldung und es wird auch die Zeile 3 nicht kopiert; die Datei im sPfad wird geöffnet
V2: So wie es jetzt ist: Hier wird zwar die Zeile 3 kopiert und in die Zeile 5 eingefügt, aber die Datei im sPfad wird nicht geöffnet
Option Explicit
Const sPfad = "J:\FB-ALLE\Datei2.xlsx""
Sub Einzel3()
Sheets("Konsolidierung").Select
Worksheets("Konsolidierung").Range("A3:U3").Copy
With Worksheets("Konsolidierung").Range("A5")
.PasteSpecial Paste:=xlValues ' Werte
End With
Application.CutCopyMode = False
Worksheets("Konsolidierung").Rows("5:5").Copy
On Error GoTo OpenErr
Workbooks.Open filename:=sPfad
Rows("4:4").Select
Selection.Insert Shift:=xlDown
Range("A4:R4").Select
Exit Sub
OpenErr: MsgBox "Fehler beim Öffnen aufgetreten"
End Sub
LG
Stefan
Hallo,
ich habe auch einen Fehler gefunden gefunden.
Zitat:Worksheets("Datei1").Range("A3:U3").Copy
Hallo
im Augenblick blicke ich nicht durch was damit gemeint ist Codeteile verschoben - und weiss nicht wie der getestete Code jetzt aussieht??
Am besten dürfte es sein eine Beispieldatei hochladeni, damit wir mal sehen was da wirklich laeuft. Am besten mit Lösung von Hand wie das Ergebnis nach dem kopieren aussehen soll. So ist das mehr heiteres VBA Ratespiel.
Was mir auch noch unklar ist, der Teil mit Rows(4:4).Select, Shift:=xlDown, und wieder Rows().Select. Wozu ist das ganze gut?? Wenn dort kopierte Werte eingefügt werden sollen, dann sollte man die Zeilen VOR dem Copy Befehl verschieben. Irgendwie ist mir der Code noch sehr undurchsichtig???
mfg Gast 123