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

Variable Pfadangabe

Variable Pfadangabe
16.03.2016 20:15:41
Tobias
Hallo liebes Forum,
wie so viele habe auch ich schon einige Stunden mit der Suche verbracht und habe doch keine Lösung für mein Problem gefunden...
Für Folgendes Problem bräuchte ich Hilfe.
Mittels eines Makros sollen Bilder von der Fastplatte meines PC's in excel kopiert werden. Hierzu steht der Name des Bildes welches eingefügt werden soll in einer x-beliebigen Spalte, nach welcher zu beginn gefragt wird. Die Bilder sollen dann jeweils den Bezeichnungen zugeordnet werden und in der spalte A eingefügt werden. Mit dem Makro welches ich geschrieben habe (ich weiss es ist sicherlich nicht elegant. aber es erfüllt für mich als blutigen Anfänger seinen Zweck...) funktioniert das auch ganz gut, solange der Name des Bildes und der Zellinhalt zu welchem das Bild zugeordnet werden soll übereinstimmen. Und genau jetzt ist der Punkt erreicht an welchem ich nicht mehr weiter komme...die Bilder auf der Festplatte stimmen in Ihren Bezeichnungen zwar teilweise mit den Zellinhalten überein, eine vollständige Übereinstimmung ist aber nicht immer gewährleistet...Wie kann ich es nun relisiere, dass das Bild auch bei einer teilweisen Übereinstimmung zugeordnet wird? Ich bräcuhte ja wahrscheinlich eine Anweisung welche bspw. bewirkt, dass auch bei teilweiser Übereinstimmung zugeordnet wird. Also wird dies wahrscheinlich in irgeneiner Weise mit Platzhaltern und Variablen realisiert...aber wie? Kann mir bitte jemand meinen angefügten Code soweit umschreiben/ergänzen, dass dies gewährleistet ist und ich es als Anfänger noch nachvollziehen und daraus lernen kann?
Sub Bild_einfügen()
Dim Dat As String
Dim Zelle As Range
Dim ScaleA As Double
Dim shpBild As Shape
Dim stx As String
Dim i As Integer
Dim Zeilenanzahl As Integer
Dim Bildname As String
Dim Pfad As String
Dim stxPfad As String
Rows("1:1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.RowHeight = 69
Columns("A:A").Select
Selection.ColumnWidth = 16
stx = InputBox("In welcher Spalte steht der Name des Bildes?")
Zeilenanzahl = ActiveSheet.UsedRange.Rows.Count
For i = 1 To Zeilenanzahl
Bildname = ActiveSheet.Cells(i, stx).Value
Pfad = "C:\Users\Administrator\Pictures\Saved Pictures\"
stxPfad = Dir("C:\Users\Administrator\Pictures\Saved Pictures\*" & Bildname & "*.jpg")
If stxPfad  "" Then
Set Zelle = ActiveSheet.Cells(i, 1)
Zelle.Select
ActiveSheet.Pictures.Insert ("C:\Users\Administrator\Pictures\Saved Pictures\" & Bildname & ".  _
_
jpg")
Else
End If
Next i
For Each shpBild In ActiveSheet.Shapes
With shpBild
.Height = Application.CentimetersToPoints(3)
.Width = Application.CentimetersToPoints(2.5)
End With
Next
End 

Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable Pfadangabe
17.03.2016 08:42:05
ChrisL
Hi Tobias
Ich lasse die Frage offen.
Was man vielleicht noch halbwegs realisieren könnte ist eine Suche mittels Teilstring z.B.
Suche "Müller"
Ergebnis "Peter-Müller-AG.jpg"
Bereits dies wird aber einigermassen kompliziert, weil du mit uneindeutigen Suchresultaten und evtl. Mehrfachtreffern konfrontiert bist.
Natürlich liessen sich auch noch weitere Regeln definieren z.B.
Suche "Müller"
Ergebnis "Mueller.jpg"
Aber damit würde dann die Datei-Suchroutine länger dauern und die Komplexität weiter zunehmen.
Wäre also alles recht viel Aufwand und Fälle wie z.B.
Suche "P.Müller"
Ergebnis "Peter-Müller.jpg"
hättest du damit noch nicht abgedeckt.
Fazit: So einfach ist es nicht...
cu
Chris

Anzeige
AW: Variable Pfadangabe
17.03.2016 14:52:45
Tobias
Hallo ChrisL,
vielen Dank für deine Antwort. Der erste Fall würde im Prinzip schon genügen. D.h. Es handelt sich immer um einzelne Wörter. Die Bezeichnung des Bildes lautet zum Beispiel 123AutoABC und in der Zelle steht nur Auto. Umlaute kommen nicht vor und auch Sonderzeichen sind keine in den Bildernamen enthalten. Zu Dopplungen sollte es normalerweise nicht kommen und wenn dann ist dies nicht sehr tragisch. Mir geht es auch ums lernen, d.h. sollten mir dann im Nahhinein noch Änderungen in den Sinn kommen werde ich weiter sehen aber hierzu muss ich zunächst dieses Problem lösen ;)

Anzeige
AW: Variable Pfadangabe
17.03.2016 15:56:49
ChrisL
Hi Tobias
Hier mal ein vereinfachtes Beispiel. Suchstring in Spalte A, Resultat in Spalte B.
Sub t()
Dim i As Long
For i = 1 To 2
Cells(i, 2) = FS(Cells(i, 1))
Next i
End Sub
Private Function FS(strSuche As String) As String
Dim objFSO As FileSystemObject
Dim objFolder As Folder
Dim objFile As File
Dim strPath As String
Dim strFile As String
'strPath = "C:\Pfad\"
strPath = ThisWorkbook.Path & "\"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strPath)
For Each objFile In objFolder.Files
If UCase(Right(objFile.Name, 3)) = "JPG" And _
InStr(1, UCase(objFile.Name), UCase(strSuche))  0 Then _
FS = objFile.Name
Next objFile
End Function

cu
Chris

Anzeige
AW: Variable Pfadangabe
17.03.2016 17:35:28
ChrisL
Hi Tobias
Mir ist noch etwas aufgefallen. Die Vorgehensweise ist bezüglich Laufzeit suboptimal (=quatsch :). Dies insofern, dass mit jedem Suchbegriff die Dateisuche von vorne beginnt. Schlauer wäre es im ersten Schritt das Verzeichnis zu durchsuchen und die vorhandenen Dateien mit der Excel-Liste abzugleichen.
Aber teste erstmal so. Wenn es wenige Dateien sind resp. eine kurze Liste ist, wird es egal sein.
cu
Chris

AW: Variable Pfadangabe
18.03.2016 13:37:11
Tobias
Hallo Chris,
vielen Dank für deine Hilfe. Ja damit, dass bei jedem Durchlauf die ganze Arbeit gemacht wird und das (=quatsch) bzw. uneleganat ist, hast du bestimmt recht. Aber als Anfänger geht es mir zunächst einmal darum es überhaupt lauffähig zu bekommen und zu verstehen was dort passiert....
Was ich nun noch nicht so richtig verstanden habe ist, wie ich hier jetzt den Teilstring in dem kompletten Bildnamen finde bzw. wie das bei deinem Makro realisiert wird...vielleicht könntest du mir diesbezüglich nochmals auf die Sprünge helfen

Anzeige
AW: Variable Pfadangabe
18.03.2016 13:48:20
ChrisL
Hi Tobias
Vergiss den "quatsch", war eher an mich selbst gerichtet, wobei inzwischen bin ich mir gar nicht mehr sicher, ob die andere Variante besser wäre.
Im VBA-Editor, Extras, Verweis müsstest du übrigens noch "Microsoft Scripting Runtime" aktivieren.
Beispiel:
Suche: "Auto"
Dateiname: "123auto123.jpg"
Sub t()
Dim strErgebnis As String
strErgebnis = FS("Auto")
MsgBox strErgebnis
End Sub
Private Function FS(strSuche As String) As String
Dim objFSO As FileSystemObject
Dim objFolder As Folder
Dim objFile As File
Dim strPath As String
Dim strFile As String
'strPath = "C:\Pfad\"
strPath = ThisWorkbook.Path & "\"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strPath)
For Each objFile In objFolder.Files
If UCase(Right(objFile.Name, 3)) = "JPG" And _
InStr(1, UCase(objFile.Name), UCase(strSuche))  0 Then _
FS = objFile.Name
Next objFile
End Function

Die Funktion muss ins gleiche Modul wie dein Makro und bleibt bis auf den Pfad grundsätzlich unverändert.
Die Funktion FS() macht aus einem Teilstring einen vollständigen Dateinamen, dazu einfach den Teilstring in die Klammer z.B.
MsgBox FS("Teilstring")
oder
GanzerString = FS("Teilstring")
cu
Chris
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige