Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1820to1824
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Pfad für Exportdatei ändern

Pfad für Exportdatei ändern
30.03.2021 12:32:20
Martin
Hi zusammen,
ich habe einen Code, der soweit gut funktioniert, bis auf die letzte Zeile. Im Code wird zuerst ein Teil eines Tabellenblatts in eine andere Excel Datei exportiert. Im 2. Schritt soll ein anderes Tabellenblatt komplett exportiert werden in eine neue separate Datei. Das funktioniert auch, aber ich würde gerne den Speicherort anpassen. Und zwar auf Basis des Speicherorts der Datei in die die ersten Daten kopiert werden. Im Grunde habe ich gedacht, dass in der letzten Zeile anstatt wbkTF.SaveAs wksTF.Parent.Path einfach wbkTF.SaveAs wbimport.Parent.Path stehen müsste. Das funktioniert aber leider nicht.
Ich hoffe ich konnte es gut beschrieben, wo mein Problem ist und Danke schon mal vorab. :-)
LG
Martin
Sub Export()
Dim lngRow As Long, rng As Range, wksTF As Worksheet, wbkTF As Workbook
Dim i As Long
Dim importdatei As Variant
Dim wbimport As Workbook
With Sheets(2)
For lngRow = 2 To 200000
If .Cells(lngRow, 18) > 0 Then
If rng Is Nothing Then
Set rng = .Range(.Cells(lngRow, 1), .Cells(lngRow, 46))
Else
Set rng = Union(rng, .Range(.Cells(lngRow, 1), .Cells(lngRow, 46)))
End If
End If
Next
End With
If Not rng Is Nothing Then
importdatei = Application.GetOpenFilename(filefilter:="Microsoft Exel-Dateien(*.xlsx),*. _
xlsx", Title:="Datei auswählen")
If importdatei = False Then Exit Sub
Set wbimport = Workbooks.Open(importdatei)
With wbimport.Worksheets(1)
rng.Copy
.Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial xlValues
Application.CutCopyMode = False
wbimport.Save
wbimport.Close
End With
End If
Set rng = Nothing
Set wksTF = ActiveWorkbook.Worksheets(7)
wksTF.Copy
Set wbkTF = ActiveWorkbook
wbkTF.SaveAs wksTF.Parent.Path & "\" & "TF-" & ThisWorkbook.Sheets(4).Range("C1") & ".xlsx"
End Sub


15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
wbimport.Path wb is bereits die Mappe owt
30.03.2021 12:37:10
ralf_b

AW: wbimport.Path wb is bereits die Mappe owt
30.03.2021 13:06:24
Martin
mmmh, leider nicht. Ich habe die Ursprungsdatei im Ordner Downloads. Die Datei, die ich für die ersten Daten raussuche ist in irgendeinem anderen Ordner. Gespeichert wird die zweite Datei aber auch im Downloads Ordner und nicht im Ordner der ausgesuchten ersten Datei.

AW: wbimport.Path wb is bereits die Mappe owt
30.03.2021 13:26:34
ralf_b
ich habe nur auf deine Angaben Bezug genommen. wbimport.Parent.Path heißt das du den Pfad des Elternelementes vom wbimport haben willst. Ich nahm an das dies ein Irrtum ist, denn das Elternelement der Mappe ist die Application.
wbimport ist die erste Datei, die du anhand eines Pfades öffnest.
gruß
rb

Anzeige
AW: wbimport.Path wb is bereits die Mappe owt
30.03.2021 13:30:37
Martin
Danke Ralf, das erklärt warum es nicht funktioniert. Genau den Pfad der ersten Datei möchte ich nun auch zum Speichern der zweiten Datei verwenden. Wäre ja zu schön gewesen das einfach auszutauschen. Wie kann ich denn den Pfad dazu auslesen?
Danke und Gruß
Martin

wbimport.Path <-----
30.03.2021 13:52:32
ralf_b
das steht im Betreff

AW: wbimport.Path <-----
30.03.2021 14:10:13
Martin
Hi Ralf,
klappt leider nicht. Wenn ich es einfach so mache:
wbkTF.SaveAs wbimport.Path & "\" & "TF-" & ThisWorkbook.Sheets(4).Range("C1") & ".xlsx"
...dann erhalte ich Laufzeitfehler-2147467259 (80004005). Obwohl das Blatt gar nicht geschützt ist?
Danke und Gruß,
Martin

Anzeige
na dann ....
30.03.2021 14:29:50
ralf_b
welches Blatt ist denn nicht geschützt? und welches ist es?
ist der Pfad korrekt wbimport.Path & "\" & "TF-" & ThisWorkbook.Sheets(4).Range("C1") & ".xlsx"
Ich rate nicht weiter rum. Bin dann raus.
gruß
rb

AW: na dann ....
30.03.2021 14:39:58
Martin
Hi Ralf,
leider ist keines der Tabellenblätter geschützt. Dann könnte ich den Fehler ja leicht beheben.
Ich verstehe nicht, warum das Makro den Pfad von wbimport nicht erkennt und verwendet um wbkTF in dem Ordner zu speichern.
LG
Martin

AW: na dann .... ich bin raus
30.03.2021 15:10:58
ralf_b
prüfe deinen Pfad mit
debug.print wbimport.Path & "\" & "TF-" & ThisWorkbook.Sheets(4).Range("C1") & ".xlsx"
dann siehst du im Direktfenster ob der Pfad überhaupt so passt. Dann kann man weitersuchen.

Anzeige
AW: Pfad für Exportdatei ändern
30.03.2021 22:14:53
Yal
Hallo Martin,
dein Coding macht 2 komplett getrennte Aufgaben. Die würde ich in 2 getrennten Subs ablegen.
Private ExportPfad As String
Private twb As Workbook
Public Sub Export()
ExportPfad = ""
Set twb = ThisWorkbook
ZurAusgewählterDatei_exportieren
If ExportPfad  "" Then Sheet7_exportieren
End Sub
Private Sub ZurAusgewählterDatei_exportieren()
Dim lngRow As Long, rng As Range
Dim importdatei As Variant
Dim wbimport As Workbook
With Sheets(2)
For lngRow = 2 To 200000
If .Cells(lngRow, 18) > 0 Then
If rng Is Nothing Then
Set rng = .Range(.Cells(lngRow, 1), .Cells(lngRow, 46))
Else
Set rng = Union(rng, .Range(.Cells(lngRow, 1), .Cells(lngRow, 46)))
End If
End If
Next
End With
If Not rng Is Nothing Then
importdatei = Application.GetOpenFilename(filefilter:="Microsoft Exel-Dateien(*.xlsx),*. _
xlsx", Title:="Datei auswählen")
If importdatei = False Then Exit Sub
Set wbimport = Workbooks.Open(importdatei)
ExportPfad = wbimport.Path
With wbimport.Worksheets(1)
rng.Copy
.Cells(.Cells(.Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial xlValues
Application.CutCopyMode = False
wbimport.Save
wbimport.Close
End With
End If
Set rng = Nothing
End Sub
Private Sub Sheet7_exportieren()
Dim wksTF As Worksheet
Dim wbkTF As Workbook
Set wksTF = wb.Worksheets(7)
wksTF.Copy
Set wbkTF = ActiveWorkbook
wbkTF.SaveAs ExportPfad & "\" & "TF-" & twb.Sheets(4).Range("C1") & ".xlsx"
End Sub

VG
Yal

Anzeige
AW: Pfad für Exportdatei ändern
31.03.2021 08:01:51
Martin
Hallo Yal,
Danke! Das ist eine gute Idee. Leider funktioniert auch diese nicht. Der Exportpfad soll ja der sein, wo die Datei steht die man im Makro "ZurAusgewählterDatei_exportieren" ausgewählt hat.
An mehreren Stellen kommt nun die Meldung Objektvariable nicht definiert. Wenn ich diese im Public Sub definiere (siehe unten), reicht das scheinbar nicht aus. Definiere ich diese nun _ auch in den beiden anderen Subs, funktioniert zwar "ZurAusgewählterDatei_exportieren" ganz normal, aber "Sheet7_exportieren" funktioniert weiterhin nicht, da "Exportpfad="" trotzdem leer ist.

Public Sub Export()
Dim ExportPfad As String
Dim twb As Workbook
ExportPfad = ""
Set twb = ThisWorkbook
ZurAusgewählterDatei_exportieren
If ExportPfad  "" Then Sheet7_exportieren
End Sub
Kannst du dir das nochmal anschauen?
Danke und Gruß,
Martin

Anzeige
AW: Pfad für Exportdatei ändern
31.03.2021 10:52:06
Yal
Hallo Martin,
nein, so funktioniert es leider nicht. Was Du wissen/verstehen brauchst, ist die Gültigkeitsbereich von Variablen.
Siehe dafür (Lesepflicht ;-)
https://www.herber.de/vbabasics/0007.html
Deswegen habe ich die Variablen ExportPfad und twb auf Modul-Ebene definiert. Wenn Du diese nochmal innerhalb eine Sub definierst, dann herstellst Du eine neue komplett unabhängige Variable, die die Modul-Variable "maskiert" (die Modul-Variable ist dann nicht mehr ansprechbar).
VG
Yal

AW: Pfad für Exportdatei ändern
31.03.2021 11:05:58
Martin
Hallo Yal,
ja das habe ich verstanden. Danke.
An einer Stelle hat es trotzdem gehakt:
Dim wbkTF As Workbook
Set wksTF = wb.Worksheets(7)
habe ich geändert in
Dim wbkTF As Workbook
Set wksTF = twb.Worksheets(7)
Jetzt funktioniert es prima! Danke für die Hilfe!!!

Anzeige
Vielen Dank für die Rückmeldung...
31.03.2021 21:58:03
Yal
ja, Tippfehler. Passiert immer wieder. Aber Du hast es entdeckt.
VG
Yal

AW: Vielen Dank für die Rückmeldung...
01.04.2021 22:34:39
Martin
Hi Yal,
danke auf jeden Fall nochmal.
Wie gesagt, es funktioniert soweit. Wir haben jetzt nur das Problem, dass der Pfad in der Cloud ist und nicht auf dem PC selbst. Das erkennt VBA jedoch nicht und es kommt eine Fehlermeldung, dass der Pfad nicht ausgelesen werden kann: "Fehler beim Zugriff auf Pfad/Datei:'.\VBC27F.tmp'
Kennst du dafür eine Lösung oder geht das generell nicht mit einem Cloud Pfad? Wenn dem so wäre kann man ja auf dem PC erstmal alles erledigen udn dann die Dateien hochladen...
Danke und frohe Ostern :-)
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige