Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1964to1968
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

Hilfe: Variabler Pfad, aus einer Listbox

Hilfe: Variabler Pfad, aus einer Listbox
14.02.2024 13:23:26
Ralf
Guten Tag zusammen
Ich benötige einmal mehr Euch es Wissen

Auf einer Tabelle2 (Einstellungen) sind ID, Name, .... & Pfad angegeben. Diese Daten werden in einer Listbox (UserForm1) eingelesen und können in einer weitern Userform2 bearbeitet werden.
Diese Mappe ist angedacht, dass es aus diversen anderen Mappen Daten kopiert, das habe ich auch hinbekommen.
Nun wäre es aber sehr schön, wenn ich den Pfad als Variable in der Userform2 verwenden könnte, um meinen Import zu starten:

Der "sPfad" und "PR_1" müssen variabel werden, diese Daten sind auf der Tabelle2(Einstellungen)
__________________________________________________________________________________
Mein Code für den Import (immer auf eine bestimmte Zelle fixiert)
Private Sub CommandButton6_Click()
'Projekt 1 (PR1) Realisierung
Dim wbQuelle As Workbook
'ScreenUpdating und PopUps deaktivieren
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Dateipfad der Quelldatei
sPfad = ActiveWorkbook.Worksheets("Einstellungen").Range("B3").Value

'Prüfen, ob ein Pfad hinhterlegt ist, in Tabelle Einstellungen
If Worksheets("Einstellungen").Range("B3").Value = "" Then
MsgBox "PR1 Realisierung - kein Pfad vorhanden!", vbSystemModal + 16
Exit Sub
End If

'Prüfen, ob Datei existiert
If Dir(sPfad) > "" Then

'Arbeitsmappe öffnen
Set wbQuelle = Workbooks.Open(sPfad)

'Daten kopieren und einfügen
wbQuelle.Worksheets(3).Range("A1:CB20").Copy


Dim ws As Worksheet
On Error Resume Next
Set ws = ThisWorkbook.Worksheets("PR1_R")
On Error GoTo 0
If ws Is Nothing Then
MsgBox "Tabelle PR1_R nicht vorhanden!", vbSystemModal + 16
wbQuelle.Close SaveChanges:=False
Exit Sub
End If

'hier gehts weiter, falls die Tabelle existiert!
ThisWorkbook.Worksheets("PR1_R").Range("A1").PasteSpecial (xlPasteValues)
Set ws = Nothing

'Arbeitsmappe schließen
wbQuelle.Close SaveChanges:=False
End If

Worksheets("cruising_speed").Activate

'ScreenUpdating und PopUps aktivieren
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

__________________________________________________________________________________

Wie kann ich diese Variable in einen Code einsetzten, resp. den Pfad (Spalte F) und die Tabelle (Spalte E) aus der ausgewählten Zeile verwenden?
(resp. der oben aufgeführte Code, in der UserForm2 (Bearbeitung) einfügen)
_______________________________________________________________________________
Private Sub CommandButton2_Click()
sPfad = .Cells(p_aktuelleZeile, 6).Value
Workbooks.Open (sPfad)
End Sub
____________________________________________________________
Ich habe schon vieles versucht, jedoch kommt immer eine Fehlermeldung.
Ich wäre Euch sehr dankbar, für eine Hilfestellung.

Lg Ralf

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hilfe: Variabler Pfad, aus einer Listbox
14.02.2024 16:35:40
ralf_b
ich bin etwas verwirrt nach Lesen deiner Frage.

Willst du den Pfad aus der Userform Listboxliste lesen oder aus einer Tabellenzelle?
und so nebenbei angemerkt: wenn du schon Objektvariablen für Sheet und Workbooks benutzt, dann bitte auch durchgängig. Damit vermeidest du ,gerade beim Öffnen von Dateien, das hier etwas durcheinander gerät. Welche Fehlermeldung erhälst du "immer" ?

AW: Hilfe: Variabler Pfad, aus einer Listbox
14.02.2024 19:05:22
Yal
Hallo Ralf,

die Reihenfolge deiner Prüfungen ist verwirrend: warum öffnest Du eine zweite Datei, um dann festzustellen, dass in der erste Datei (wo man gestartet ist) etwas fehlt?

Passt auch auf, dass ActiveWorkbook und Thisworkbook nicht das gleiche ist!

Fehlertolerante Aktionen ("On Error") kann man in getrennte Sub/Function ablegen, da On Error nur innerhalb eines Sub/Function gilt.

Die Werte in Spalte E und F der Zeile der ActiveCell kann man mit
ActiveCell.EntireRow.Cells(5).Value 'bzw 6
abfragen.

Private Sub CommandButton6_Click()

'Projekt 1 (PR1) Realisierung
Dim sPfad As String
Dim sWSName As String
Dim wsZiel As Worksheet
Dim wbQuelle As Workbook

Application.ScreenUpdating = False
Application.DisplayAlerts = False

'Prüfen, ob PR1_R vorhanden ist
sWSName = ActiveCell.EntireRow.Cells(5).Value '5te Zelle in einer Zeile ist in Spalte E
Set wsZiel = Ws_holen(sWSName)
If wsZiel Is Nothing Then
MsgBox "Tabelle """ & sWSName & """ nicht vorhanden!", vbCritical
Exit Sub
End If

'Prüfen, ob ein Pfad hinhterlegt ist, in Tabelle Einstellungen
sPfad = ActiveCell.EntireRow.Cells(6).Value '6te Zelle in einer Zeile ist in Spalte F
If sPfad = "" Then
MsgBox "PR1 Realisierung - kein Pfad vorhanden!", vbCritical
Exit Sub
End If

'Prüfen, ob Datei existiert
If Dir(sPfad) = "" Then
MsgBox "Datei" & vbCr & """" & sPfad & """" & vbCr & "scheint nicht vorhanden zu sein!", vbCritical
Exit Sub
End If

'wenn alles passt, dann machen
Set wbQuelle = Workbooks.Open(sPfad)
wbQuelle.Worksheets(3).Range("A1:CB20").Copy
wsZiel.Range("A1").PasteSpecial (xlPasteValues)
wbQuelle.Close SaveChanges:=False

Worksheets("cruising_speed").Activate

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Private Function Ws_holen(WsName As String) As Worksheet
On Error Resume Next
Set Ws_holen = ThisWorkbook.Worksheets(WsName)
End Function


VG
Yal
Anzeige
Korrektur
14.02.2024 19:08:58
Yal
Application.ScreenUpdating = False und Application.DisplayAlerts = False sollte man nicht vor einem Exit Sub setzen!

Private Sub CommandButton6_Click()

'Projekt 1 (PR1) Realisierung
Dim sPfad As String
Dim sWSName As String
Dim wsZiel As Worksheet
Dim wbQuelle As Workbook

'Prüfen, ob PR1_R vorhanden ist
sWSName = ActiveCell.EntireRow.Cells(5).Value '5te Zelle in einer Zeile ist in Spalte E
Set wsZiel = Ws_holen(sWSName)
If wsZiel Is Nothing Then
MsgBox "Tabelle """ & sWSName & """ nicht vorhanden!", vbCritical
Exit Sub
End If

'Prüfen, ob ein Pfad hinhterlegt ist, in Tabelle Einstellungen
sPfad = ActiveCell.EntireRow.Cells(6).Value '6te Zelle in einer Zeile ist in Spalte F
If sPfad = "" Then
MsgBox "PR1 Realisierung - kein Pfad vorhanden!", vbCritical
Exit Sub
End If

'Prüfen, ob Datei existiert
If Dir(sPfad) = "" Then
MsgBox "Datei" & vbCr & """" & sPfad & """" & vbCr & "scheint nicht vorhanden zu sein!", vbCritical
Exit Sub
End If

'wenn alles passt, dann machen
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Set wbQuelle = Workbooks.Open(sPfad)
wbQuelle.Worksheets(3).Range("A1:CB20").Copy
wsZiel.Range("A1").PasteSpecial (xlPasteValues)
wbQuelle.Close SaveChanges:=False

Worksheets("cruising_speed").Activate

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Private Function Ws_holen(WsName As String) As Worksheet
On Error Resume Next
Set Ws_holen = ThisWorkbook.Worksheets(WsName)
End Function
Anzeige
AW: Korrektur
16.02.2024 09:38:11
Ralf
Hallo Yal
Ich danke Dir vielmal!
Mit deiner Hilfe konnte ich meinen Code umschreiben und noch weiter verwenden!
Echt klasse was ihr/du alles könnt und sooo hilfsbereit :-)

Ja ich bin etwas chaotisch unterwegs, die komisch Prozedur kommt daher, dass ich erst am Lernanfang stehe :-)

Vielen Lieben Dank
Ralf
AW: Korrektur
22.02.2024 12:19:59
Ralf
Hallo Yal

Ich hätte da nochmals ein Frage
wbQuelle.Worksheets(3).Range("A1:CB20").Copy

Wie kann ich anstelle des Worksheets(3) , diese Tabelle über den Code-Name ansprechen "shAuswertung".
Die Lösungen im Internet funktionieren nicht, auch mit den Rechteckigen klammern nicht.

Kannst du mir weiterhelfen?

Lg Ralf
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige