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

Hyperlink aus Zellinhalt

Hyperlink aus Zellinhalt
24.01.2017 14:47:06
Katjuscha
Hallo zusammen,
ich möchte einen Hyperlink erstellen aus dem Inhalt =Text der Zelle.
ich habe in der Zeile 2 in irgendeiner Spalte das Wort "Gemarkung" stehen. 2 Spalten weiter habe ich dann deren Name ua. stehen. Diese Zelle soll dann mit einem Hyperlink versehen werden.
Problem:
Tabellentext --> Hyperlinkadress
Teterow (1763), Flur 20--->Teterow_1763\020
Teterow (1763), Fl. 2--->Teterow_1763\002
Dann gibt es noch die Variante:
Altkalen_(1674), Flur 1--->Altkalen_1674\001_ohne FF-Liste
Ich weiß nicht wie ich sagen soll: findest du eine Zahl kleiner 10 in der Hyperlinkadresse, dann fülle mit \00 auf sonst nur mit \0.
Den Zusatz "ohne FF-Liste" sollen alle Hyperlinks bekommen, wenn die Excel-Datei im Unterordner "ungeprüft" liegt. Aber wie suche ich nach dem Datei-Pfad? Geht das überhaupt?
Einen Teil habe ich bereits gelöst, aber das mit den Nullen klappt nicht und bisher erhalten alle den Zusatz "_ohne FF-Liste".
Sub HL_Ü_automatisch()
Dim zeile As Range
Dim Hyper As Hyperlink
Dim strPath As Byte
For Spalte = 1 To 15
If Cells(2, Spalte) = "Gemarkung :" Then
Spalte = Spalte + 2
Cells(2, Spalte).Select 'Zelle wird ausgewählt
Worksheets(1).Hyperlinks.Add Anchor:=Selection, Address:=Cells(2, Spalte) & "_ohne_FF- _
Liste\"  'Hyperlink wird eingefügt
For Each Hyper In Cells(2, Spalte).Hyperlinks
If strPath > 10 Then
Hyper.Address = Replace(Hyper.Address, strPath, "\0" & strPath)
Else
Hyper.Address = Replace(Hyper.Address, strPath, "\00" & strPath)
End If
Hyper.Address = Replace(Hyper.Address, " Fl. ", "")
Hyper.Address = Replace(Hyper.Address, " Flur ", "")
Hyper.Address = Replace(Hyper.Address, ",", "")
Hyper.Address = Replace(Hyper.Address, "(", "")
Hyper.Address = Replace(Hyper.Address, ")", "")
Hyper.Address = Replace(Hyper.Address, " ", "_")
Next Hyper
Cells(2, Spalte).Activate
With Selection.Font
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleSingle
.ColorIndex = 5
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Selection.Font.Bold = True
End If
Next
MsgBox "Hyperlink gesetzt !!!"
End Sub
Ich hoffe ihr könnt mir helfen.
Gruß Katjuscha

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

Betreff
Datum
Anwender
Anzeige
AW: Hyperlink aus Zellinhalt
25.01.2017 06:47:40
fcs
Hallo Katjuscha,
ich hab die Aufbereitung des Zelltextes für den Link anders umgesetzt.
Um die Flur-Nummer zu ermitteln wird der Text nach ")" zeichenweise überprüft.
LG
Franz
Option Explicit
'Teterow (1763), Flur 20--->Teterow_1763\020
'Teterow (1763), Fl. 2--->Teterow_1763\002
'Dann gibt es noch die Variante:
'Altkalen_(1674), Flur 1--->Altkalen_1674\001_ohne FF-Liste
Sub HL_Ü_automatisch()
'Dim zeile As Range
Dim Spalte As Long
'Dim Hyper As Hyperlink
Dim varPath As Variant
Dim strLink As String, strLinkLeft As String
Dim iPos As Integer, iPos2 As Integer
Dim bolOhneFF As Boolean
For Spalte = 1 To 15
If Cells(2, Spalte) = "Gemarkung :" Then
Spalte = Spalte + 2
Cells(2, Spalte).Select 'Zelle wird ausgewählt
strLink = Cells(2, Spalte).Text
'"(" im Link suchen
iPos = InStr(1, strLink, "(")
If iPos > 0 Then
If Mid(strLink, iPos - 1, 1) = " " Then
bolOhneFF = False
strLink = VBA.Replace(strLink, " (", "_")
ElseIf Mid(strLink, iPos - 1, 1) = "_" Then
bolOhneFF = True
strLink = VBA.Replace(strLink, "(", "")
Else
MsgBox "Links vom Zeichen ""("" im Zell-Text" & vbLf & strLink & vbLf _
& "steht kein "" "" oder ""_"""
GoTo nextSpalte
End If
'")" im Link suchen
iPos = InStr(iPos, strLink, ")")
If iPos > 0 Then
strLink = VBA.Replace(strLink, ")", "\")
Else
MsgBox "Zeichen "")"" im Zelltext" & vbLf & strLink & vbLf & _
"rechts von Zahl nicht gefunden!"
GoTo nextSpalte
End If
strLinkLeft = Left(strLink, iPos)
'Suchen nach der 1. Ziffer nach ")"
iPos2 = iPos + 1
Do
If IsNumeric(Mid(strLink, iPos2, 1)) Then
Exit Do
End If
iPos2 = iPos2 + 1
Loop
iPos = iPos2 'Position der Ziffer merken
'Suchen bis Zeichen nicht mehr nummerisch
Do
If Not IsNumeric(Mid(strLink, iPos2, 1)) Then
varPath = Mid(strLink, iPos, iPos2 - iPos)
strLink = strLinkLeft & Format(Val(varPath), "000") _
& IIf(bolOhneFF, "_ohne FF-Liste", "") & Mid(strLink, iPos2)
Exit Do
ElseIf iPos2 = Len(strLink) Then
varPath = Mid(strLink, iPos, iPos2 - iPos + 1)
strLink = strLinkLeft & Format(Val(varPath), "000") _
& IIf(bolOhneFF, "_ohne FF-Liste", "")
Exit Do
End If
iPos2 = iPos2 + 1
Loop
MsgBox "Hyperlinkadresse: " & vbLf & strLink    'Testzeile
'            Cells(3, Spalte) = strLink  'Testzeile
Worksheets(1).Hyperlinks.Add Anchor:=Selection, Address:=strLink  'Hyperlink wird  _
eingefügt
With Cells(2, Spalte).Font
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleSingle
.ColorIndex = 5
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
.Bold = True
End With
Else
MsgBox "Zeichen ""("" im Link" & vbLf & strLink & vbLf & "nicht gefunden!"
End If
End If
nextSpalte:
Next Spalte
MsgBox "Hyperlink gesetzt !!!"
End Sub

Anzeige
AW: Hyperlink aus Zellinhalt
25.01.2017 09:59:00
Katjuscha
Hallo Franz,
dein Code läuft durch aber er macht nicht alles.
Dein Code ist seeeehr schwierig für mich da meine VBA-Kenntnisse fast nicht vorhanden sind.
Mal sehen ob ich im groben verstanden habe:
Du erstetzt die ( durch _. Dann ersetzt du ) durch \ und ermittelst Position im Text = Textlänge von Links.
Der Rest von deinem Code entzieht sich mir. Womit ermittelst du die Zahl? Es funktioniert aber ich verstehe es nicht.
Die Sache mit dem anfügen von "_ohne_FF-Liste" klappt überhaupt nicht. Müsste man da nicht irgendwie ermitteln wo die Excel-Datei abgelegt ist (Pfad) und dann vergleichen?
Danke für deine schnelle Hilfe.
LG Katjuscha
Anzeige
AW: Hyperlink aus Zellinhalt
25.01.2017 12:35:58
fcs
Hallo Katjuscha,
Der Rest von deinem Code entzieht sich mir. Womit ermittelst du die Zahl? Es funktioniert aber ich verstehe es nicht.
Die Zahl wird über die beiden Do-Loop-Schleifen ermittelt.
In der 1. Do-Loop-Schleife läuft der Zähler iPos2 ab der Position nach ")" nach rechts und prüft ob das Zeichen an der Position nummerisch ist. Diese Position wird in iPos gespeichert.
In der 2. Do-Loop-Schleife läuft Zähler iPos2 weiter nach rechts bis das Zeichen nicht nummerisch ist oder das Ende des Textes erreicht wird.
Der Text von iPos bis iPos2-1 (bzw. iPos2 wenn Zahl am Ende des Textes) ist dann die Zahl und kann mit der Funktion Mid ermittelt werden.
Die Sache mit dem anfügen von "_ohne_FF-Liste" klappt überhaupt nicht. Müsste man da nicht irgendwie ermitteln wo die Excel-Datei abgelegt ist (Pfad) und dann vergleichen?
Auf Basis deiner Angabe
Dann gibt es noch die Variante:
Altkalen_(1674), Flur 1--->Altkalen_1674\001_ohne FF-Liste

bin ich davon ausgegangen, dass das "_" vor der "(" das Kriterium dafür ist, "_ohne FF-Liste" an die Nummer anzufügen.
Wenn der Unter-Ordner "ungeprüft" einbezogen werden soll, dann könnte es etwa wie folgt aussehen.
Mir ist aber unklar, wo dieser Unterordner im Pfad tatsächlich ist - hier musst du ggf. nochmals anpassen.
LG
Franz
Option Explicit
'Teterow (1763), Flur 20--->Teterow_1763\020
'Teterow (1763), Fl. 2--->Teterow_1763\002
'Dann gibt es noch die Variante:
'Altkalen_(1674), Flur 1--->Altkalen_1674\001_ohne FF-Liste
Sub HL_Ü_automatisch()
'Dim zeile As Range
Dim Spalte As Long
'Dim Hyper As Hyperlink
Dim varPath As Variant
Dim strLink As String, strLinkLeft As String, strLinkOhneFF As String, strUngeprueft As  _
String
Dim iPos As Integer, iPos2 As Integer
For Spalte = 1 To 15
If Cells(2, Spalte) = "Gemarkung :" Then
Spalte = Spalte + 2
Cells(2, Spalte).Select 'Zelle wird ausgewählt
strLink = Cells(2, Spalte).Text
'"(" im Link suchen
iPos = InStr(1, strLink, "(")
If iPos > 0 Then
If Mid(strLink, iPos - 1, 1) = " " Then
strLink = VBA.Replace(strLink, " (", "_")
ElseIf Mid(strLink, iPos - 1, 1) = "_" Then
strLink = VBA.Replace(strLink, "(", "")
Else
MsgBox "Links vom Zeichen ""("" im Zell-Text" & vbLf & strLink & vbLf _
& "steht kein "" "" oder ""_"""
GoTo nextSpalte
End If
'")" im Link suchen
iPos = InStr(iPos, strLink, ")")
If iPos > 0 Then
strLink = VBA.Replace(strLink, ")", "\")
Else
MsgBox "Zeichen "")"" im Zelltext" & vbLf & strLink & vbLf & _
"rechts von Zahl nicht gefunden!"
GoTo nextSpalte
End If
strLinkLeft = Left(strLink, iPos)
'Suchen nach der 1. Ziffer nach ")"
iPos2 = iPos + 1
Do
If IsNumeric(Mid(strLink, iPos2, 1)) Then
Exit Do
End If
iPos2 = iPos2 + 1
Loop
iPos = iPos2 'Position der Ziffer merken
'Suchen bis Zeichen nicht mehr nummerisch
Do
If Not IsNumeric(Mid(strLink, iPos2, 1)) Then
varPath = Mid(strLink, iPos, iPos2 - iPos)
strLinkOhneFF = strLinkLeft & Format(Val(varPath), "000") _
& "_ohne FF-Liste" & Mid(strLink, iPos2)
strLink = strLinkLeft & Format(Val(varPath), "000") _
& Mid(strLink, iPos2)
Exit Do
ElseIf iPos2 = Len(strLink) Then
varPath = Mid(strLink, iPos, iPos2 - iPos + 1)
strLinkOhneFF = strLinkLeft & Format(Val(varPath), "000") _
& "_ohne FF-Liste"
strLink = strLinkLeft & Format(Val(varPath), "000")
Exit Do
End If
iPos2 = iPos2 + 1
Loop
'Ordner "ungeprüft" - mir ist unklar, wo dieser Ordner liegt!!!
strUngeprueft = strLinkLeft & Format(varPath, "000") & "\ungeprüft\"
'Dateiname anhängen_
strUngeprueft = strUngeprueft & Mid(strLink, InStrRev(strLink, "\") + 1)
If Dir(strUngeprueft)  "" Then
strLink = strLinkOhneFF
End If
MsgBox "Hyperlinkadresse: " & vbLf & strLink    'Testzeile
Worksheets(1).Hyperlinks.Add Anchor:=Selection, Address:=strLink  'Hyperlink  _
wird eingefügt
With Cells(2, Spalte).Font
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleSingle
.ColorIndex = 5
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
.Bold = True
End With
Else
MsgBox "Zeichen ""("" im Link" & vbLf & strLink & vbLf & "nicht gefunden!"
End If
End If
nextSpalte:
Next Spalte
MsgBox "Hyperlink gesetzt !!!"
End Sub

Anzeige
AW: Hyperlink aus Zellinhalt
25.01.2017 14:42:14
Katjuscha
Hallo Franz,
enschuldige, dann habe ich mich wohl nicht ganz klar ausgedrückt.
Ich habe den Code jetzt so verändert, er läuft auch durch und scheint zu funktionieren. Hast du Änderungsvorschläge?

Option Explicit
'Excel_Datei: G:\FF-Listen\Gemarkungen\1763-020.xls --> Zelltext:Teterow (1763), Flur 20 --->   _
Ordner G:\Daten\Teterow_1763\020
'Excel_Datei: G:\FF-Listen\Gemarkungen\1763-002.xls --> Zelltext:Teterow (1763), Fl. 2   --->   _
Ordner G:\Daten\Teterow_1763\002
'Excel_Datei: G:\FF-Listen\ungeprüft\1674-001.xls   --> Zelltext:Altkalen (1674), Flur 1 --->   _
Ordner G:\Daten\Altkalen_1674\001_ohne FF-Liste
Sub HL_Ü_automatisch()
Dim Spalte As Long
Dim varPath As Variant
Dim strLink As String, strLinkLeft As String
Dim iPos As Integer, iPos2 As Integer
ActiveSheet.Unprotect
For Spalte = 1 To 15
If Cells(2, Spalte) = "Gemarkung :" Then
Spalte = Spalte + 2
Cells(2, Spalte).Select 'Zelle wird ausgewählt
strLink = Cells(2, Spalte).Text
'"(" im Link suchen
iPos = InStr(1, strLink, "(")
If iPos > 0 Then
If Mid(strLink, iPos - 1, 1) = " " Then
strLink = VBA.Replace(strLink, " (", "_")
Else: strLink = VBA.Replace(strLink, "(", "")
End If
'")" im Link suchen
iPos = InStr(iPos, strLink, ")")
If iPos > 0 Then
strLink = VBA.Replace(strLink, ")", "\")
End If
strLinkLeft = Left(strLink, iPos)
'Suchen nach der 1. Ziffer nach ")"
iPos2 = iPos + 1
Do
If IsNumeric(Mid(strLink, iPos2, 1)) Then
Exit Do
End If
iPos2 = iPos2 + 1
Loop
iPos = iPos2 'Position der Ziffer merken
'Suchen bis Zeichen nicht mehr nummerisch
Do
If Not IsNumeric(Mid(strLink, iPos2, 1)) Then
varPath = Mid(strLink, iPos, iPos2 - iPos)
strLink = strLinkLeft & Format(Val(varPath), "000") & Mid(strLink, iPos2)
Exit Do
ElseIf iPos2 = Len(strLink) Then
varPath = Mid(strLink, iPos, iPos2 - iPos + 1)
strLink = strLinkLeft & Format(Val(varPath), "000")
Exit Do
End If
iPos2 = iPos2 + 1
Loop
Dim pfad As String
pfad = ActiveWorkbook.Path
If InStr(1, pfad, "ungeprüft") > 0 Then
strLink = strLink & "_ohne_FF-Liste"
End If
MsgBox "Hyperlinkadresse: " & vbLf & strLink    'Testzeile
Worksheets(1).Hyperlinks.Add Anchor:=Selection, Address:=strLink  'Hyperlink wird  _
eingefügt
With Cells(2, Spalte).Font                  'Zellformat
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleSingle
.ColorIndex = 5
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
.Bold = True
End With
Else
MsgBox "Zeichen ""("" im Link" & vbLf & strLink & vbLf & "nicht gefunden!"
End If
End If
nextSpalte:
Next Spalte
MsgBox "Hyperlink gesetzt !!!"
ActiveWorkbook.BuiltinDocumentProperties("Hyperlink base") = "\\fs02.lkros.local\Archiv62\ _
Zahlenwerk\Nachweise\" 'neue Hyperlinkbasis setzen
ActiveWorkbook.FollowHyperlink (strLink)
End Sub

Anzeige
AW: Hyperlink aus Zellinhalt
26.01.2017 10:15:12
fcs
Hallo Katjuscha,
folgende Sachen sind Geschmacksache keine Fehler:
1. Dim-Anweisungen mitten im Makro
Zur besseren Übersicht sollte alle Variablen-Deklarationen zu Beginn des Makros erfolgen.
2. Doppelpunkt zur Trennung von Anweisungen
            Else: strLink = VBA.Replace(strLink, "(", "")
End If

bevorzuge ich zur besseren Erkennung der Makrostruktur in der Form mit separaten Zeilen.
            Else
strLink = VBA.Replace(strLink, "(", "")
End If
Erforderliche Korrektur:
Die Zeilen/Anweisungen nach der Zeile "Next Spalte" müssen vor die letzte Zeile mit "Else" verschoben werden. Sonst kann es einen Fehler-Abbruch geben, wenn der Link nicht erfolgreich ermittelt werden konnte.
LG
Franz
Wenn der
Anzeige
AW: Hyperlink aus Zellinhalt
26.01.2017 10:57:36
Katjuscha
Hallo Franz,
Next vor das ELSE klappt nicht. Das Next gehört doch zu For ganz oben, wenn ich das jetzt wegnehme bekomme ich die Fehlermeldung: For ohne Next.
   nextSpalte:
Next Spalte
Else
MsgBox "Zeichen ""("" im Link" & vbLf & strLink & vbLf & "nicht gefunden!"
End If
End If
LG, Katjuscha
AW: Hyperlink aus Zellinhalt
26.01.2017 13:00:08
fcs
Hallo Katjuscha,
du solltest nicht das "Next Spalte" verschieben, sondern die Zeilen danach vor "Else":
              End With
MsgBox "Hyperlink gesetzt !!!"
ActiveWorkbook.BuiltinDocumentProperties("Hyperlink base") = _
"\\fs02.lkros.local\Archiv62\Zahlenwerk\Nachweise\" 'neue Hyperlinkbasis setzen
ActiveWorkbook.FollowHyperlink (strLink)
Else
MsgBox "Zeichen ""("" im Link" & vbLf & strLink & vbLf & "nicht gefunden!"
End If
End If
nextSpalte:
Next Spalte
End Sub
LG
Franz
Anzeige
AW: Hyperlink aus Zellinhalt
25.01.2017 12:39:51
Peter
Hallo Katjuscha,
das von Dir geschilderte Problem ist auch für mich interessant und ich würde Dir gerne versuchen zu helfen, habe aber zuvor noch ein paar Fragen:
1. Kannst Du eine Beispiel-Datei hochladen? Falls nicht,
2. Unter welchen gegebenenfalls weiteren Pfaden bzw. unter welchem Laufwerk liegen die Dateien mit dem gewünschten Zusatz "..._ohne FF-Liste" (Unterordner "ungeprüft")?
3. Wird nur ein Arbeitsblatt oder werden mehrere gleichartige Arbeitsblätter in der Arbeitsmappe benutzt?; sind in der Arbeitsmappe weitere Arbeitsblätter vorhanden, die nicht das Problem betreffen?
4. Ist die "Zeile2" die laut Excel-Definition oder die 2. Zeile in einem Zeilenblock (andere Excel-Zeile)?
5. Entspricht die zu suchende Datei vom Namen nach dem Tabellentext?, also Dateiname = Teterow (1763), Fl. 2 (z. B.)?
Mit freundlichem Gruß
Peter Kloßek
Anzeige
AW: Hyperlink aus Zellinhalt
25.01.2017 13:42:13
Katjuscha
Hallo Peter,
zu deinen Fragen:
Der Zelltext ist immer nach dem Prinzip Teterow (1763), Flur 2 aufgebaut.
Die Excel-Dateien, in die der Hyperlink geschrieben wird, liegen im Laufwerk G:\FF_Listen\Gemarkungen
oder G:\FF_Listen\ungeprüft.
Die Datenordner liegen z.B. unter G:\Daten\Teterow_1763\036 oder G:\Daten\Altkalen_1674\001_ohne_FF-Liste.
Liegt also die Excel-Datei im Ordner "ungeprüft" liegen die Daten im Ordner mit dem Zusatz "ohne_FF-Liste".
2. Zeile im Arbeitsblatt
Nur ein Arbeitsblatt in jeder Datei davon aber 1400
Die Verlinkung erfolgt nicht zu einer Datei sondern zu einem Ordner.
Im Prinzip klappt der Code von Franz. Er sieht mir nur etwas zu kompliziert aus. Kann man das nicht vereinfachen?
Ich habe jetzt noch diesen Teil hinzugefügt jetzt klappt auch das.
Dim pfad As String
pfad = ActiveWorkbook.Path
If InStr(1, pfad, "ungeprüft") > 0 Then
strLink = strLink & "_ohne_FF-Liste"
End If
Gruß Katjuscha
Anzeige
AW: Hyperlink aus Zellinhalt
25.01.2017 16:06:18
Peter
Hallo Katjuscha,
wenn ich richtig gelesen habe, hat Deine Arbeit mit dem Katasterwesen zu tun. Dies ist sicher eine sehr verantwortungsvolle Tätigkeit. Wenn nun in den Dateien Änderungen vorgenommen werden sollen, dann müssen diese ganz genau nachvollziehbar sein. Es genügt auch nicht, einfach nur ein Makro zu erstellen. Auch wenn dies funktioniert, willst Du in alle 1.400 Dateien erst dieses Makro einbauen, bevor Du es dann ausführen kannst? Ich gehe mal davon aus, dass anstelle des ursprünglichen Eintrages der Hyperlink erscheinen soll. Wäre es da nicht sinnvoll, die geänderte Datei in einen eigenen Ordner abzuspeichern?
Ich blicke bei dem Makro von Franz leider auch nicht ganz durch. Wenn ich das richtig verstehe, ist doch nur eine Zelle auf dem Blatt zu ändern, oder? Bitte gebe mir Bescheid, wenn ich falsch liege.
Gerne mache ich mich jetzt an die Arbeit, einen Vorschlag auszuarbeiten. Es kann jedoch längere Zeit dauern, bis ich mich wieder melde.
Mit freundlichem Gruß
Peter Kloßek
Anzeige
AW: Hyperlink aus Zellinhalt
26.01.2017 10:28:29
Katjuscha
Hallo Peter,
du hast Recht ich arbeite im Katasterwesen.
Der Zelltext soll so bleiben wie er ist. Aus dem Zelltext soll nur die Hyperlinkadresse entstehen, die an die Ordnerstruktur angepasst werden muss.
Dazu müssen die Leerzeichen durch _ ,die Klammer ( entfernt, die ) durch ein \ erstetzt, der Bereich von \ bis zur Flurnummer entfernt und die Flurnr. 3stellig werden.
Ich speichere das Makro in meiner persönlichen Arbeitsmappe, dort sind alle Makros gespeichert, die ich für die Überarbeitung der Tabellen benötige.
1. Makro zur Überarbeitung von Tabellenkopf und Formatierungen
2. Makro zur Überarbeitung alter Hyperlinks, anschließende Prüfung und Färbung (Ordnerstruktur hat sich geändert)
3. Makro für neue Hyperlinkbasis (Server ist neu)
4. dieses
5. muss noch: Neues Schutzmakro (beschrieben Zellen der Tabelle schützen, leer nicht)
Ich muss jede einzelne Datei öffnen, die Makros durchlaufen lassen und speichern. Automatisch geht das nicht, da ich manche Links noch manuell verändern muss.
Ich habe das Makro von Franz ein wenig gekürzt und verändert. Es macht was es soll. Falls du dich trotzdem noch versuchen möchtest oder auch nur einen Änderungsvorschlag hast, würde ich mich freuen.

Option Explicit
'Ziel:  In den FF-Listen steht in der 2. Zeile in irgendeiner Spalte der Gemarkungsname mit  _
Flur.
'       Hieraus möchte ich einen Hyperlink erstellen. Den vorhanden Zelltext nehme ich dafür  _
als Grundlage
'       und wandele ihn so ab, daß er zu Ordnerstruktur des Archivs passt.
'Excel_Datei: G:\FF-Listen\Gemarkungen\1763-020.xls --> Zelltext:Teterow (1763), Flur 20 --->   _
Ordner G:\Daten\Teterow_1763\020
'Excel_Datei: G:\FF-Listen\Gemarkungen\1763-002.xls --> Zelltext:Teterow (1763), Fl. 2   --->   _
Ordner G:\Daten\Teterow_1763\002
'Excel_Datei: G:\FF-Listen\ungeprüft\1674-001.xls   --> Zelltext:Altkalen (1674), Flur 1 --->   _
Ordner G:\Daten\Altkalen_1674\001_ohne FF-Liste
'klappt erstellt am 25.01.2017  (mit Hilfe von Franz aus dem Herbers Excel-Forum)
Sub HL_Überschrift()
Dim Spalte As Long
Dim varPath As Variant
Dim strLink As String, strLinkLeft As String
Dim iPos As Integer, iPos2 As Integer
ActiveSheet.Unprotect
For Spalte = 1 To 15
If Cells(2, Spalte) = "Gemarkung :" Then
Spalte = Spalte + 2
Cells(2, Spalte).Select 'Zelle wird ausgewählt
strLink = Cells(2, Spalte).Text
'"(" im Link suchen
iPos = InStr(1, strLink, "(")
If iPos > 0 Then
If Mid(strLink, iPos - 1, 1) = " " Then
strLink = VBA.Replace(strLink, " (", "_")
Else: strLink = VBA.Replace(strLink, "(", "")
End If
'")" im Link suchen
iPos = InStr(iPos, strLink, ")")
If iPos > 0 Then
strLink = VBA.Replace(strLink, ")", "\")
End If
strLinkLeft = Left(strLink, iPos)
'Die Zahl wird über die beiden Do-Loop-Schleifen ermittelt.
'In der 1. Do-Loop-Schleife läuft der Zähler iPos2 ab der Position nach ")" nach  _
rechts
'und prüft ob das Zeichen an der Position nummerisch ist. Diese Position wird in  _
iPos gespeichert.
'Suchen nach der 1. Ziffer nach ")"
iPos2 = iPos + 1
Do
If IsNumeric(Mid(strLink, iPos2, 1)) Then
Exit Do
End If
iPos2 = iPos2 + 1
Loop
iPos = iPos2 'Position der Ziffer merken
'In der 2. Do-Loop-Schleife läuft Zähler iPos2 weiter nach rechts bis das Zeichen  _
nicht nummerisch ist
'oder das Ende des Textes erreicht wird. Der Text von iPos bis iPos2-1 (bzw. iPos2  _
wenn Zahl am Ende des Textes)
'ist dann die Zahl und kann mit der Funktion Mid ermittelt werden.
'Suchen bis Zeichen nicht mehr nummerisch
Do
If Not IsNumeric(Mid(strLink, iPos2, 1)) Then
varPath = Mid(strLink, iPos, iPos2 - iPos)
strLink = strLinkLeft & Format(Val(varPath), "000") & Mid(strLink, iPos2)
Exit Do
ElseIf iPos2 = Len(strLink) Then
varPath = Mid(strLink, iPos, iPos2 - iPos + 1)
strLink = strLinkLeft & Format(Val(varPath), "000")
Exit Do
End If
iPos2 = iPos2 + 1
Loop
Dim pfad As String
pfad = ActiveWorkbook.Path
If InStr(1, pfad, "ungeprüft") > 0 Then
strLink = strLink & "_ohne_FF-Liste"
End If
MsgBox "Hyperlinkadresse: " & vbLf & strLink    'Testzeile
Worksheets(1).Hyperlinks.Add Anchor:=Selection, Address:=strLink  'Hyperlink wird  _
eingefügt
With Cells(2, Spalte).Font                  'Zellformat
.Name = "Arial"
.Size = 12
.Underline = xlUnderlineStyleSingle
.ColorIndex = 5
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
.Bold = True
End With
Else
MsgBox "Zeichen ""("" im Link" & vbLf & strLink & vbLf & "nicht gefunden!"
End If
End If
nextSpalte:
Next Spalte
MsgBox "Hyperlink gesetzt !!!"
ActiveWorkbook.BuiltinDocumentProperties("Hyperlink base") = "G:\Daten\" 'neue Hyperlinkbasis  _
setzen
ActiveWorkbook.FollowHyperlink (strLink)
End Sub
LG, Katjuscha
AW: Hyperlink aus Zellinhalt
26.01.2017 11:37:14
Peter
Hallo Katjuscha,
ich habe ein Programm entwickelt, mit dem Du m. E. einfacher arbeiten kannst. Der erforderliche Makro ist im Programm bereits enthalten. Es genügt die Eingabe von Pfad- und Dateiname in den gelb-unterlegten Feldern und ein Klick auf den Button. Wenn Du den Hyperlink überprüfen möchtest, gib bitte unten eine "1" ein. Eine Anpassung des Hyperlinks dürfte nicht erforderlich sein. Den Hyperlink habe ich in "C7" nach Deinen Angaben erstellt. Damit hatte ich jedoch bei meinen Tests keinen Erfolg. Es müssen Laufwerk und Pfadname vorangestellt werden ("C8"). Bei meinem Test habe ich bei den "Daten" für den Hyperlink Dateien vorausgesetzt. Wenn tatsächlich nur der Pfad im Hyperlink bezeichnet wird, kriegst Du das durch eine einfache Änderung in der Zelle "C8" hin: In der Formel '&".xlsx"' wegnehmen.
Ich empfehle, die geänderten Dateien in einen neuen Pfad abzuspeichern. Da nicht anzunehmen ist, dass Du in einem Rutsch alle 1.400 Dateien bearbeitest, weißt Du hinterher nicht, welche Datei nun umgesetzt wurde und welche nicht. Für meinen Test habe ich an die geänderten Dateien hinter der Dateinummer ein "A" angefügt. Aus folgendem Grund: Wenn man den Hyperlink überprüfen will, kann man eine gleichnamige Datei nicht laden. Wenn der Hyperlink nur den Pfad bestimmen soll, kann dies entfallen.
In den hellblau-unterlegten Feldern kannst Du Laufwerke und Pfade verändern.
Wenn Du willst, kannst Du meine Tests mit den beiliegenden Dateien nachvollziehen, oder gleich mit den Originaldaten testen. Welche Pfade mit welchen Dateien ich für meinen Test eingerichtet habe, geht aus den Hinweisen zur Datei "Umsetzung-Hyperlink" hervor.
Hier zunächst das Programm:
https://www.herber.de/bbs/user/110904.xlsm
Bitte speichere diese Datei mit dem Namen "Umsetzung_Hyperlink.xlsm" ab.
Die von mir verwendeten Testdateien
a) Dateien unter "FF_Listen"
https://www.herber.de/bbs/user/110905.zip
b) Dateien unter "Daten"
https://www.herber.de/bbs/user/110906.zip
Ich habe unter dem Laufwerk "G:" getestet; wenn Du mit diesem Laufwerk nicht testen kannst, weil es möglicherweise zu Kollisionen mit den Echtdaten kommt, kannst Du auch ein anderes Laufwerk wählen.
Wenn die Eingaben in den gelb-unterlegten Feldern zu viel Arbeit macht, könnte man auch eine Auflistung rechts neben dem Programmteil mit den Dateien eines angegebenen Pfades erstellen und durch Auswahl mit Rechtsklick auf den Dateinamen Pfad und Datei in den Programmteil übernehmen und gleichzeitig die Bearbeitung starten.
Viel Spaß beim Testen.
Mit freundlichem Gruß
Peter Kloßek
AW: Hyperlink aus Zellinhalt
27.01.2017 10:00:06
Peter
Hallo Katjuscha,
ich habe mein Programm jetzt in dem Sinne umgebaut, dass die Hyperlinks nicht Dateien (unter G:\Daten) sondern nunmehr den Explorer mit den Unterpfaden anzeigen. Dadurch konnte auch das "A" im Namen der geänderten Dateien entfallen.
Weiterhin habe ich eine Auswahlmöglichkeit angefügt. Wenn Du auf "Neue Auswahl" klickst, bekommst Du sämtliche Pfadnamen angezeigt, unter denen Dateien liegen. Wähle den Pfad mit einem Rechtsklick aus, es werden dann die zugehörigen Dateien angezeigt. Wiederum durch einen Rechtsklick wählst Du die Datei aus, die dann in das Programmschema automatisch überführt wird. Den dritten Klick machst Du auf den Button "Öffnen, Bearbeiten und Abspeichern".
Du kannst Deine Makros aus der persönlichen Makroarbeitsmappe ohne weiteres in mein Programm integrieren. An welcher Stelle dies im Makro1 geschehen kann, habe ich in den Hinweisen 2 dargestellt. Es muss hier der Makroname eingetragen werden. Die Makros selbst müssen einmalig in ein Modul meines Programms kopiert werden. Dies empfiehlt sich dann, wenn die betreffenden Makros regelmäßig zu jeder Datei ausgeführt werden sollen.
Hier das geänderte Programm, bitte unter "Umsetzung_Hyperlink1" abspeichern.
https://www.herber.de/bbs/user/110932.xlsm
Mit freundlichem Gruß
Peter Kloßek

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige