Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1868to1872
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

Makro liest ganzen Pfad aus

Makro liest ganzen Pfad aus
15.02.2022 09:40:02
Vasko
Hallo liebe Forumsmitglieder,
ich habe schon einige probiert, aber halt keine Ahnung... Ich habe ein funktionierendes Makro, das eigentlich alles macht was ich brauche.
Nämlich alle Dateien, die ich in einem Ordner markiere, in eine markierte Zelle untereinander einfügt.
Mein Problem es wird der ganze Pfad ausgelesen und ich hätte gerne nur den Dateinamen ausgelesen.
Vielen herzlichen Dank für eure Hilfe.
Vasko

Sub Dateien3()
Dim PicList() As Variant
Dim PicFormat As String
Dim Rng As Range
Dim xFSO As Object
Dim xFolder As Object
On Error Resume Next
PicList = Application.GetOpenFilename(PicFormat, MultiSelect:=True)
xColIndex = Application.ActiveCell.Column
If IsArray(PicList) Then
xRowIndex = Application.ActiveCell.Row
For lLoop = LBound(PicList) To UBound(PicList)
Set Rng = Cells(xRowIndex, xColIndex)
Rng.Value = PicList(lLoop)
Set xFolders = ActiveSheet.xFSO.GetFolder(PicList(lLoop), msoFalse, msoCTrue)
xRowIndex = xRowIndex + 1
Next
End If
End Sub

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro liest ganzen Pfad aus
15.02.2022 09:58:37
Oberschlumpf
Hi Vasko,
ersetz deinen Code komplett mit diesem Code

Sub Dateien3()
Dim PicList() As Variant
Dim PicFormat As String
Dim Rng As Range
Dim xFSO As Object
Dim xFolder As Object
Dim xColIndex As Long, xRowIndex As Long
Dim lstrFilenameOnly() As String 'von mir
On Error Resume Next
PicList = Application.GetOpenFilename(PicFormat, MultiSelect:=True)
xColIndex = Application.ActiveCell.Column
If IsArray(PicList) Then
xRowIndex = Application.ActiveCell.Row
For lLoop = LBound(PicList) To UBound(PicList)
Set Rng = Cells(xRowIndex, xColIndex)
lstrFilenameOnly = Split(PicList(lLoop), "\") 'von mir
Rng.Value = lstrFilenameOnly(UBound(lstrFilenameOnly)) 'von mir
Set xFolders = ActiveSheet.xFSO.GetFolder(PicList(lLoop), msoFalse, msoCTrue)
xRowIndex = xRowIndex + 1
Next
End If
End Sub
Hinter die neuen Codezeilen hab ich 'von mir hintergeschrieben - jetzt wird in den Zellen nur der Dateiname eingetragen.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Makro liest ganzen Pfad aus
15.02.2022 10:06:59
Vasko
Kampekides !!!
Hi Thorsten,
vielen Dank. Nach Stunden der Selbstgeiselung, endlich Erlösung! Danke!
Ist nicht immer so, dass ein noob einfache unkompliziert Hilfe bekommt!!! 👏
Herzliche Grüße
Vasko
AW: Makro liest ganzen Pfad aus
15.02.2022 17:07:36
Yal
Hallo zusammen,
@Thorsten: kannst Du mir verraten, warum deine Version "funktioniert"? xFSO wird nirgendwo instanziert (?)
@Vasko: wenn mit Datei gearbeitet werden soll, empfiehlt es sich den "Microsoft Scripting Runtime" Bibliothek anzubinden. Darin steht die Klassen FileSystemObject, File und Folder. Nach der Anbindung auf dem Objektkatalog gehen (F2 oder "Ansicht", "Objektkatalog") und neugierig sein.
Als Anfanger empfielt es sich die Variablendeklaration als Pflicht zu nehmen ("Extras", "Optionen", "Variablendeklaration erforderlich").
Auch wichtig: ein paar Lauf in Schritt-Modus beim geöffneten Lokalfenster machen und schauen, wie die Variabeln, Objekte, usw. sich verhalten. So lernt man am schnellsten.
Wenn man Dir eine funktionierende Lösung liefert, aber gar nicht hilft zu verstehen, warum es funktioniert, ist es mMn nur eine Scheinhilfe. Deine Abhängigkeit von Dritten besteht weiterhin.

Sub Dateien3()
'funktioniert nur mit einem Verweis ("Extas", "Verweise..") auf "Microsoft Scripting Runtime"
Dim PicList()
Dim Rng As Range
Dim xFSO As FileSystemObject
Dim xFile As File
Dim i
On Error Resume Next
PicList = Application.GetOpenFilename(PicFormat, MultiSelect:=True)
If Not IsArray(PicList) Then Exit Sub
Set Rng = ActiveCell
Set xFSO = New FileSystemObject
For i = LBound(PicList) To UBound(PicList)
Set xFile = xFSO.GetFile(PicList(i))
Rng.Value = xFile.Name 'mache "Name" weg, drück Strg+Leertaste und schau, was angeboten wird: das gleiche wie im Objektkatalog.
Set Rng = Rng.Offset(1, 0) 'platziere den Cursor auf "Offset" und drücke Strg+F1. Schau dir die Online-Hilfe und die Beispiele.
Next
End Sub
VG
Yal
Anzeige
AW: Makro liest ganzen Pfad aus
15.02.2022 19:33:44
Oberschlumpf
Hi,
ja, kann ich dir verraten - Schritt für Schritt
1. neue Excel-Datei erstellt
2. im VBE allgemeines Modul hinzugefügt ("Variablendeklaration erforderlich" ist immer aktiviert)
3. den alten Code von Vasko eingefügt; sieht dann schon mit Eregebnis so aus:
Userbild
ja, Option Explicit hatte ich deaktiviert - Grund: ich hatte keine Lust, alle fehlenden Variablen zu deklarieren
ABER! Der Code funktioniert genau wie von Vasko beschrieben - OHNE, dass der Microsoft-Verweis gesetzt wurde (nein, von Extras/Verweise zeig ich jetzt nich auch noch n Foto)
4. so, geht weiter...
5. den Code wie von mir später gezeigt angepasst und gestartet - Ergebnis siehe...
Userbild
Option Explicit is noch immer deaktiviert; aber wie du siehst, hatte ich vor dem Deaktivieren wenigstens 2 Variablen deklariert; da aber die Hinweise "Variable nicht bekannt" (oder so ähnlich) nicht aufhörten, hatte ich, wie geschrieben, auf weiteres Deklarieren keine Lust mehr
Warum das Ganze auch ohne Verweis funktioniert, weiß ich nich, aber es tut, was es soll.
So, dein Hinweis bzgl "...ist es mMn nur eine Scheinhilfe... usw - verstehe ich als kleinen Vorwurf - und find das gar nich lustig! (aber ok, du kannst meinen was du willst)
ICH meine, wenn jemand Code erhält, der funktioniert, derjenige aber den einen oder anderen Befehl oder den ganzen Sinn, WARUM alles funktioniert, (noch) nicht versteht, der kann doch dann google.de starten und so lange Suchbegriffe eingeben, bis DIE Seite MIT DER Erklärung gezeigt wird, die vom Suchenden auch verstanden wird.
ICH meine, dass ich mich nicht in der Pflicht sehen muss, alles zu erklären, was ich so als fehlerfreie Programmierung einer fragenden Person liefer.
Und ICH meine, dass ich schon verdammt viel Erklärtexte geliefert habe - egal, ob hier im Antworttext oder als Kommentare im Code.
Ciao
Thorsten
Anzeige
@Thorsten
16.02.2022 09:02:53
Yal
Hallo Thorsten,
ich muss mich entschuldigen: wenn ich mich schon nicht ganz diplomatisch ausdrücke, dann sollte ich nicht auch noch ungenau sein.
Nur die erste Zeile war Dir adressiert. Der Rest war für Vasko bestimmt.
Darüber hinaus war "deine Version" falsch ausgedruckt: Du hast richtig ergänzt. Nur den

Dim xFolder As Object
Set xFolders = ActiveSheet.xFSO.GetFolder(PicList(lLoop), msoFalse, msoCTrue)
war grob falsch. Aber eben nicht von Dir.
Da diese Zeile null Auswirkung hat, hätte ich erwartet, dass Du diese wegnimmst. Der "On Error Resume Next" führt zwar zu eine fehlermeldungfreie Durchlauf, man kann es für einen nicht VBA-bewandte Fragenden nicht stehen lassen. Es ist zugegeben eine reine Meinungssache, bitte nicht polemisch aufnehmen.
VG
Yal
Anzeige
@Yal
16.02.2022 09:33:23
Oberschlumpf
Moin,
alles gut!
Deine Antwort auf meine Antwort :-) liest sich auch ganz anders.
Aber nun...nachdem meine "Aufregung" auf 0 abgeklungen ist, werd ich deine Hinweise mehr beachten.
Hätt ich nämlich Option Explicit "angelassen", dann wäre auch mir xFSO aufgefallen, und ich hätte mich gefragt: "Ups, was is das und wieso steht dazu nix weiter im Code?"
Und...die Zeile mit "On Error..." hab ich gar nicht gesehen!
So is ja kein Wunder, dass der Code auch mit fehlendem Verweis durchläuft.
Nun denn, lass uns weiter ne schöne Zeit bei herber.de haben :-)
Ciao
Thorsten
Anzeige
AW: @Val
16.02.2022 09:44:20
Vasko
Hallo Val,
bitte nicht dipektierlich verstehen.
Ich bin wirklich sehr dankbar und bin absolut der Meinung, das Hilfe zur Selbsthilfe, um Selbständikeit und Transfer Wissen zu fördern, absolut der richtige Weg ist,
aber leider bin ich halt so noob, dass ich nichtmal Deine Anmerkungen so ausführen kann, dass sich dadurch Verknüpfungen ergeben. Ich habe die Strg+Leertaste gedrückt und es ist der Befehlskatalog von a-z aufgeploppt. Dann war für meine Eingeschränktheit schluss, weil ich mir total verloren vorkam.
Strg+F1 habe ich auch aufgerufen und mir durchgelesen aber auch da fehlen mir zuviele Zusammenhänge, als das ich wirklich verstehe; ich verstehe den Sinn-Inhalt, aber auch nicht wriklich mit Sicherheit, kann es aber nicht verknüpfen und anwenden schon gar nicht.
Ich habe ca. 20 h die letzten drei Wochen, mit Google, Videos und Foren verbracht, um selbst zu versuchen, eine Excel-Arbeitsblatt zu erstellen, das mir das Leben etwas leichter macht. Ohne programmieren lernen zu wollen, da meiner unqualifizierten Einschätzung nach, der Aufwand für das von mir benötigte, den Rahmen sprengen würde und ich tatsächlich gedacht hätte, dass mir neben Beruf, Familie und Hobbies, dafür die Zeit fehlt. Da mir das eintauchen jedoch Spaß gemacht hat und ich grundsätzlich jemand sein möchte, der die Sachen auch versteht, bin ich dabei mir Einführungsvideos zur VBA Programierung anzusehen und gemerkt das, dass auch eine Welt für sich ist.
In meinen Rechercheversuchen, habe ich unheimlich viele Beiträge und Hilfestellungen von Dir über lange Jahre gesehen. Danke dafür!
Ganz herzliche Grüße
Vasko
Anzeige
AW: @Val
16.02.2022 09:53:12
Vasko
Hallo Val,
sorry heißt natürlich dispektierlich...😊
Herzliche Grüße
Vasko
AW: @Val
16.02.2022 10:09:09
Vasko
uuuups und natürlich Yal.......,
AW: @Val
16.02.2022 10:18:29
Yal
Hallo Vasko,
kein problem. Wir haben ein Herz für Anfänger.
Es ist klar, dass das Objektkatalog, die Online-Hilfe, Lokalfenster und Intellisense (u.a. Strg+Leertaste) am Anfang "ein bischen viel" ist. Es sind Steinchen, die einem auf den richtigen Weg begleiten. Nur nach und nach ergibt sich das ganze Bild.
Wichtig ist: das Willen und die Freude, etwas neues zu entdecken.
Vielleicht ergänzend zu den Strg+Leertaste: Excel benutzt einen Objekt-Modell, spricht ein Workook ist ein Objekt, das in "Workbooks" (Achtung "s" am Ende beachten) aufgelistet ist und selber Unterelement wie "Worksheet" hat (die selber in den "WorksheetS" Auflistung vorkommt).
Dementsprechend bekommst Du nach (beachte den Punkt am Ende):
Workbooks. --> die Auflistung alle Workbook, eine "Sammlung"-Objekt (eng. Collection)
ThisWorkbook. --> diese Workbook-Objekt, also nur ein bestimmte Workbook
Worksheets. --> die Auflistung alle Worksheets von einem Workbook, also auch Collection-Objekt
Worksheets("Tabelle1"). --> eine Worksheet-Objekt.
jeweils mit Strg+Leertaste eine andere Liste, weil die Unterelemente der jeweiligen Objekte stets eine andere ist.
Vorgeschlagen werden die jeweils gütlige, anwendbaren Methode und Eigenschaften eines Objektes.
Aber nicht zu viel auf einmal. Was das alles ist, kommt nach und nach. Nur dass Du mit diesem Wissen schneller zuordnen kanst, was Du gerade siehst oder entdeckst (hoffe ich).
Übrigens: despektierlich (aber ich habe es selber gegoogelt. Ich bin nicht deutschsprachig geboren :-)
VG
Yal
Anzeige
AW: @Val
16.02.2022 10:41:55
Vasko
Danke😁 und ja lol ich bin es auch nicht wie man an meinem Namen wohl vermuten kann😊!
Jetzt hätte ich noch eine Frage, wenn erlaubt, oder mache ich da einen neuen Thread auf?
Kann man diese Makro auf einem Apple Rechner zum laufen bringen? Ich habe es ausprobiert und es hat leider nciht funktioniert, genauso wenig wie das Bilder- einfüg-Makro aus dem ich mir das hier gebastelt hatte...
Andere Makros, die nur im Arbeitsblatt selbst laufen, also nicht wie dieses auf Ordner zugreifen und bestimmte Dateien ausgewählt werden, funktioniern (natürlich?).
Danke schon wieder!😊
Herzliche Grüße
Vasko
Anzeige
AW: @Val
16.02.2022 11:09:32
Yal
Hallo Vasko,
neue Thread startest Du mit dem obere Menü-Punkt "Neuer beitrag".
Bei manchen Rechner sind grundsächlich die Makros nicht erlaubt.
Gehe auf Datei , Optionen, Trust Center, Einstellungen für das Trust center.., und Makro-Eintellungen.
VG
Yal
AW: @Val
16.02.2022 11:59:07
Vasko
Hi Yal,
danke dann mach ich mal nen neuen Thread auf😁. Die Makros laufen und sind zugelassen, aber wie ich das sehe kommuniziert Apple einfach anders und deswegen funktionieren gewisse Befehle, die auf Windowsrechner ausgelegt sind einfach nicht..?
Danke Dir nochmal und herzliche Grüße
Vasko

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige