2.9k Aufrufe
Gefragt in Windows 7 von
Hallo zusammen,

ich möchte aus der ersten Spalte eine Zahl auslesen und mit dieser einen Hyperlink zu einer Datei im Netzwerk erstellen. Der Hyperlink hat diese Form: "C:\....\zahl.doc" Dabei soll die Zahl ohne Formatierung stehen bleiben und in der Spalte daneben soll der Hyperlink als Adresse dargestellt werden.

In meiner Testdatei funktioniert das Makro einwandfrei, aber in der eigentlichen Datei wandelt es die Zahl in einen Hyperlink um ( mit der richtigen Adresse) und direkt daneben wird eine Adresse mit einem Hyperlink immer mit der Zahl "38267" erzeugt.

Beide Dateien liegen im selben Verzeichnis. Ich habe die eingetliche Datei noch einmal Excel 2013 Datei mit Makros gespeichert. Die Formatierungen habe ich schon einmal heraus genommen ( fixierter Rand und Such/Filter-Funktion) und ich habe mit dem "Radiergummi schon einmal die Formatierungen aus der zu bearbeitenden Zeile gelöscht. Ich habe auch die Sicherheitseinstellungen überprüft, die bei der eingetlichen Datei und der Testdate gleich sind. Leider bleibt alles beim Alten.

Bei meiner Testdatei sind allerdings nur zwei Spalten beschrieben und in der eigetlichen Datei gibt es insgesamt 10 Spalten, die beim Ausführen des Makro jedoch bis auf Spalte 1 und 7 leer sind.

Hier mein Quellcode: ( leider weiß ich nicht, wie ich den für das Forum formatieren kann)

Sub Link_erzeugen2()

'nimmt die Zahl der ersten Spalte und verwendet diese um in der nächsten Spalte einen Link zum Dokument
'ins Netzwerk zu erstellen, Tastenkombination Strg + l ( Klein L)


zahl = ActiveCell.Value 'liest die Zahl aus
zelle = ActiveCell.Address 'liest die Adresse aus
ActiveCell.Offset(0, 1).Activate 'geht eine Spalte nach links
ActiveSheet.Hyperlinks.Add Anchor:=Range(zelle), Address:="C:\" & zahl & ".doc" 'erstellt Hyperlink, bei Bedarf in .docx ändern
Product = ActiveSheet.Hyperlinks(1).Address
ActiveCell.Value = Product 'schreibt Hyperlink in Zelle
End Sub


Viele Grüße

Barbara

7 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Barbara,

es wundert mich, dass in deiner Testdatei das Makro so funktioniert, wie du willst. denn du fügst den Hyperlink mit dem Codeteil
Add Anchor:=Range(zelle)
ja in die Zelle ein, aus der du die Zahl ausliest und deren Adresse du der Variablen Zelle zugeordnet hast:

ActiveSheet.Hyperlinks.Add Anchor:=Range(zelle), Address:="C:\" & zahl & ".doc"


Versuch es mal so (ich hoffe ich habe dich richtig verstanden):

Sub Link_erzeugen2()

Dim strZahl As String

strZahl = ActiveCell.Value 'liest die Zahl aus
Cells(ActiveCell.Row, ActiveCell.Column + 1).Hyperlinks.Add Anchor:=Cells(ActiveCell.Row, ActiveCell.Column + 1), Address:="C:\" & strZahl & ".doc" 'erstellt Hyperlink, bei Bedarf in .docx ändern

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M. O.

Vielen Dank für den Tipp.Leider tut sich mit dem neuen Quellcode gar nchts mehr.

Der ursprüngliche Plan war, dass durch die Zeile:


ActiveCell.Offset(0, 1).Activate 'geht eine Spalte nach links


die aktivierte Zelle um eins nach links verschoben wird und dann in der neu aktivierten Zelle der Link erstellt wird.

Die Excel-Tabelle soll so aussehen:


____________________________
Zahl | C:\.....\Zahl.doc |
____________________________



Viele Grüße
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Barbara,

bei mir funktioniert der gepostete Code einwandfrei. Er erzeugt in der Spalte rechts, die neben der aktiven Zelle ist, einen Hyperlink.
Warum der Code bei dir nicht funktioniert, kann ich natürlich nicht sagen. Der Code gehört in ein allgemeines Modul.

Hier mal eine kleine Beipieldatei: KLICK MICH!

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.

Es klappt. Er hat nur den bereits bestehenden Inhalt nciht überschrieben, deswegen hatte ich vorhin Probleme. Jetzt habe ich den Inhalt der zweiten Spalte gelöscht und nun funktioniert es super.

Vielen Dank!
0 Punkte
Beantwortet von
Hallo,

ich habe noch eine Frage:

Momentan schreibe ich die Zahl in die erste Zeile und schließe den Vorgang dann über Enter oder Tab ab. Gibt es eine Möglichkeit, dass ich die Zahl eintippe und dann gleich über die Tastenkombination des Makros ( Strg+L) das Makro ausführen kann?

Vielen Dank schonmal!
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Barbara,

füge das folgende Makro in das VBA-Projekt des betreffenden Arbeitsblattes ein:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim strZahl As String

'Nur wenn Änderung in Spalte A vorgenommen wird, das Makro ausführen
If Target.Column = 1 Then
strZahl = Target.Value 'liest die Zahl aus
Cells(Target.Row, Target.Column + 1).Hyperlinks.Add Anchor:=Cells(Target.Row, Target.Column + 1), Address:="C:\" & strZahl & ".doc" 'erstellt Hyperlink, bei Bedarf in .docx ändern
End If

End Sub


Damit wird der Hyperlink erstellt, sobald du die Zahl in Spalte A eingegeben hast und die Zelle verlässt.
Das andere Makro wird damit überflüssig.

Gruß

M.O.
0 Punkte
Beantwortet von
HAllo M. O.

Vielen Dank,

es funktioniert einwandfrei!

Viele Grüße
...