PDA

Vollständige Version anzeigen : per VBA eine ander Datei kopieren und öffnen


Ladi
26.09.2016, 17:36
Hallo zusammen

Kann mir jemand weiterhelfen?
Ich möchte per VBA aus einer Excel-Datei eine ander Excel-Datei in den gleichen Ordner kopieren und danach öffnen.
Das Kopieren funktioniert. Aber die Datei wird danach nicht geöffnen.

Kann mir jemand sagen was ich hier falsch gemacht haben?

Private Sub cmd_ausführen_Click()
Dim strQuelle As String
Dim strZiel As String
Dim strDatei As String

strQuelle = "O:\Bezugsort\"
strZiel = ThisWorkbook.Path & "\"

strDatei = "Zieldatei.xlsm"

If Dir(strQuelle & strDatei) <> "" Then
FileCopy strQuelle & strDatei, strZiel & strDatei


End If

Workbooks.Open(ThisWorkbook.Path & "\" & "Zieldatei.xlsm").Activate

Unload frm_Verschiebung
Application.DisplayAlerts = False
ActiveWorkbook.Close (True)
Application.Quit

End Sub

Vielen Dank im Voraus

Gruss Ladi

rastrans
26.09.2016, 17:49
Hallo,

Workbook.Open hat keine Methode Activate. Das macht das nämlich schon allein! Wenn du das möchtesst, dann speichere das Workbook beim Öffnen in einer Variablen und greife dann auf diese zu.

Und wenn du schon mit Variablen arbeitest, dann macht doch auch damit weiter!;)

Viele Grüße
rastransPrivate Sub cmd_ausführen_Click()
Dim strQuelle As String
Dim strZiel As String
Dim strDatei As String
Dim wb As Workbook

strQuelle = "O:\Bezugsort\"
strZiel = ThisWorkbook.Path & "\"

strDatei = "Zieldatei.xlsm"

If Dir(strQuelle & strDatei) <> "" Then
FileCopy strQuelle & strDatei, strZiel & strDatei
End If

Set wb = Workbooks.Open(strZiel & strDatei)

'muss nicht, aber wenn du möchtest
wb.Activate

Unload frm_Verschiebung
Application.DisplayAlerts = False
ActiveWorkbook.Close (True)
Application.Quit
End Sub

Storax
26.09.2016, 17:54
Mit ActiveWorkbook.Close schließt Du sie auch gleich

Esche
27.09.2016, 06:54
Was möchtest du eigentlich tun?
Wenn du eine neue Datei kopirst und öffnest und gleich wieder schliesst!
Application.DisplayAlerts = False
ActiveWorkbook.Close (True)
Application.Quit
Mit diesem Code wird ja die aktive Datei wieder geschlossen.

Ladi
27.09.2016, 08:20
Hallo zusammen

Vielen Dank für eure Hilfe.
@ Esche vielen Dank für dein Imput logischerweise möchte ich nicht die Zieldatei wieder schliessen! sondern die Bezugsort-Datei.

Wie kann ich diese Ansprechen?

Gruss Ladi

Ladi
27.09.2016, 09:53
Ich habe es hinbekommen.

Workbooks("Bezugsort.xlsm").Close savechanges:=False

Mit diesem Code wird die Datei geschossen

nochmals vielen Dank an alle

Gruss Ladi

rastrans
27.09.2016, 10:07
Um das dann wieder allgemeingültig zu machen, kannst du hier dann auch schreibenThisWorkbook.Close SaveChanges:=FalseMit ThisWorkbook (https://msdn.microsoft.com/de-de/library/office/ff193227(v=office.15).aspx) ist immer das Dokument gemeint, welches den Code gerade ausführt.

Damit wied der Code auch richtig ausgeführt, wenn du mal den Dateinamen änderst.