Frontpage 2003: .... per Makro in Ordnerliste positionieren
Frontpage 2003: .... per Makro in Ordnerliste positionieren
am 30.06.2007 19:29:34 von HGH
Hallo zusammen,
ich möchte mit Hilfe eines Makros folgendes Machen.
Man selektiert z.B. in Frontpage ein Bild in einer Webseite.
Dann ruft man ein Makro auf, dass daraufhin in der Ordnerliste den
Unterordner selektiert anzeigt, in dem sich die Datei befindet.
Wie kann man das lösen?
Ich habe bisher folgendes:
Dim objRange As IHTMLTxtRange
Set objRange =3D ActiveDocument.Selection.createRange
el =3D objRange.parentElement
If el > "" Then
MsgBox "ausgewähltes Objekt: -> " + el
Else
MsgBox "keine Auswahl !"
End If
-> el enthält dabei den Dateinamen incl. Pfadangaben.
Jetzt muss noch der Dateiname in der Ordnerliste identifiziert werden
und die Liste soll sich dann dyn. öffen und auf den Ordner
positionieren, in dem die Datei ist.
Das scheint einigermassen schwierig zu werden. ;)
Das Schmankerl wäre natürlich, wenn man auch noch diesen letzten
Ordner öffen könnte und gleich die Datei selektiert.
Wrr kann mir dazu Hifen geben?
Viele Grüße
Hans-Günter
Re: Frontpage 2003: .... per Makro in Ordnerliste positionieren
am 01.07.2007 18:18:31 von Christoph Schneegans
"HGH" schrieb:
> Man selektiert z.B. in Frontpage ein Bild in einer Webseite.
> Dann ruft man ein Makro auf, dass daraufhin in der Ordnerliste den
> Unterordner selektiert anzeigt, in dem sich die Datei befindet.
Es ist leicht, den Pfad des Bilders und übergeordneten Ordner zu
ermitteln:
Sub SelectFolderOfImage()
'"src"-Attribut des Bildes ermitteln.
Dim elm As IHTMLElement
Set elm = ActiveDocument.activeElement
If elm.tagName <> "img" Then Exit Sub
Dim src As String
src = elm.getAttribute("src")
'Debug.Print src
'Absoluten Pfad der Bilddatei ermitteln.
Dim absoluteFileUrl As String
absoluteFileUrl = MakeAbs(ActiveDocument.URL, src)
'Datei und übergeordneten Ordner ermitteln.
Dim wfil As WebFile
Set wfil = ActiveWeb.LocateFile(absoluteFileUrl)
Dim wfol As WebFolder
Set wfol = wfil.Parent
MsgBox wfol.URL
End Sub
Die Auswahl in der Ordnerliste will mir aber trotz etlicher Versuche
nicht gelingen. Was willst du den letztlich erreichen? Vielleicht gibt
es alternative Ansätze.
Re: Frontpage 2003: .... per Makro in Ordnerliste positionieren
am 03.07.2007 15:40:16 von HGH
> Die Auswahl in der Ordnerliste will mir aber trotz etlicher Versuche
> nicht gelingen. Was willst du den letztlich erreichen? Vielleicht gibt
> es alternative Ansätze.
Hallo Christoph,
ich möchte in der Ordnerliste von Frontpage dann sofort z.B. die
"Umbenennungsfunktion (mit der rechten Maustaste)" nutzen können.
Wenn man viele Unterordner in "Images" hat, ist es immer einigermaßen
mühselig sich bis an die genaue Position der Datei im Verzeichnisbaum
durchzukämpfen.
Da man ja den gesamten Pfad der Datei ermitteln kann, wäre es klasse,
wenn das System sich dann per Makro in der Ordnerliste dann gleich
automatisch in das richtige Vetrzeichnis begibt.
Vielen Dank zunächst aber für die bisherigen Mühen, auch wenn das
Endergebnis noch fern ist. ;)
Viele Grüße
Hans-Günter
Re: Frontpage 2003: .... per Makro in Ordnerliste positionieren
am 03.07.2007 22:45:13 von Christoph Schneegans
"HGH" schrieb:
> ich möchte in der Ordnerliste von Frontpage dann sofort z.B. die
> "Umbenennungsfunktion (mit der rechten Maustaste)" nutzen können.
Sag das doch gleich, das Umbenennen eines Ordners läßt sich doch auch
per Makro regeln:
Sub RenameFolderOfImage()
'"src"-Attribut des Bildes ermitteln.
Dim elm As IHTMLElement
Set elm = ActiveDocument.activeElement
If elm.tagName <> "img" Then Exit Sub
Dim src As String
src = elm.getAttribute("src")
'Absoluten Pfad der Bilddatei ermitteln.
Dim absoluteFileUrl As String
absoluteFileUrl = MakeAbs(ActiveDocument.Url, src)
'Datei und übergeordneten Ordner ermitteln.
Dim wfil As WebFile
Set wfil = ActiveWeb.LocateFile(absoluteFileUrl)
Dim wfol As WebFolder
Set wfol = wfil.Parent
'Ordner umbenennen.
Dim newFolderUrl As String
Do
newFolderUrl = InputBox("Neue URL:", , wfol.Url)
If LCase(newFolderUrl) = LCase(wfol.Url) Then
MsgBox "Nur hinsichtlich Groß- und Kleinschreibung unterschiedlich!", vbOKOnly Or vbExclamation
ElseIf newFolderUrl = "" Then
Exit Sub
Else
Exit Do
End If
Loop
wfol.Move newFolderUrl, UpdateLinks:=True, ForceOverwrite:=False
End Sub
Re: Frontpage 2003: .... per Makro in Ordnerliste positionieren
am 04.07.2007 07:16:23 von HGH
Hallo Christofh,
auch für diese Lösung zunächst schönen Dank, aber eigentlich wollte
ich dann "nur" die Bilddatei innerhalb des Ordners umbenennen.
Bin mir aber ziemlich sicher, dass es auch (von Dir) dazu noch eine
Lösung gibt.
VieleGrüße
Hans-Günter
Re: Frontpage 2003: .... per Makro in Ordnerliste positionieren
am 05.07.2007 13:13:45 von Christoph Schneegans
"HGH" schrieb:
> auch für diese Lösung zunächst schönen Dank, aber eigentlich wollte
> ich dann "nur" die Bilddatei innerhalb des Ordners umbenennen.
Auch kein Problem:
Sub RenameImageFile()
'"src"-Attribut des Bildes ermitteln.
Dim elm As IHTMLElement
Set elm = ActiveDocument.activeElement
If elm.tagName <> "img" Then Exit Sub
Dim src As String
src = elm.getAttribute("src")
'Absoluten Pfad der Bilddatei ermitteln.
Dim absoluteFileUrl As String
absoluteFileUrl = MakeAbs(ActiveDocument.URL, src)
'Datei ermitteln.
Dim wfil As WebFile
Set wfil = ActiveWeb.LocateFile(absoluteFileUrl)
'Datei umbenennen.
Dim newFileUrl As String
Do
newFileUrl = InputBox("Neue URL:", , wfil.URL)
If LCase(newFileUrl) = LCase(wfil.URL) Then
MsgBox "Nur hinsichtlich Groß- und Kleinschreibung unterschiedlich!", vbOKOnly Or vbExclamation
ElseIf newFileUrl = "" Then
Exit Sub
Else
Exit Do
End If
Loop
wfil.Move newFileUrl, UpdateLinks:=True, ForceOverwrite:=False
End Sub
--
· Die häufigsten Fragen zu FrontPage
Re: Frontpage 2003: .... per Makro in Ordnerliste positionieren
am 06.07.2007 18:59:48 von HGH
Hallo Christoph,
auch zunächst für die neue Lösung vielen Dank.
Sie funktionieren alle, aber so richtig komfortabel ist das leider
alles nicht.
Gibt es denn per Makro keine Möglichkeit auf die Ordnerliste
zuzugreifen, dann in der Liste "Stück für Stück" den gesamten Pfad der
Datei abzuarbeiten und letztlich den letzten Ordner komplett
aufzublenden um alle darin vorhanden Dateien zu sehen?
Das wäre das, was ich gerne hätte. Dann könnte ich auf alle Dateien
ggf. notwendige Aktionen über die rechte Maustaste anwenden.
Viele Grüße
Hans-Günter
Re: Frontpage 2003: .... per Makro in Ordnerliste positionieren
am 09.07.2007 00:39:36 von Christoph Schneegans
"HGH" schrieb:
> Gibt es denn per Makro keine Möglichkeit auf die Ordnerliste
> zuzugreifen,
Ich kenne keine, sonst hätte ich sie dir bereits verraten. Man kann in VBA
bequem _auslesen_, welche Dateien und Ordner in der Ordnerliste momentan
markiert sind, aber der schreibende Zugriff auf diese Eigenschaften ist
offenbar nicht vorgesehen. Man kann in VBA notfalls auch Menübefehle
ausführen, dummerweise gibt es aber AFAICS keinen Befehl, der das tut, was
du willst.
--
· Schema-Validator für XML