Workbooks Open
#1
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
Top
#2
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.
Top
#3
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
Top
#4
Hallo Sabina

du warst sehr aufmerksam!!  Das Leerzeichen habe ich NICHT gesehen.  Wie schön das es aufmerksame Kolleginnen gibt ....

mfg  Gast 123
Top
#5
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
Top
#6
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
Top
#7
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
Top
#8
Hallo,

ich habe auch einen Fehler gefunden gefunden.

Zitat:Worksheets("Datei1").Range("A3:U3").Copy
Top
#9
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
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste