Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
608to612
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
608to612
608to612
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hyperlink auf *.dot dokumente als *.dot öffnen?

Hyperlink auf *.dot dokumente als *.dot öffnen?
09.05.2005 14:30:21
SKitschak
Hallo ich versuch schon seit längerem folgendes:
Ich habe mehrere Hyperlinks auf *.dot Dokumente. Wenn ich diese ausführedann werden diese als dot Dokumente und nicht als doc geöffnet.
folgendes funktioniert aber:

Sub test()
Dim e
e = Shell ("""D:\Microsoft Office\Office\winword.exe""" + " /t""""C:\fax.dot""",3)
End Sub

Kennt jemand vielleicht eine einfachere Möglichkeit.
Ich versuche gerade den obigen Befehl über ein CommandButton ausführen zu lassen. Dies allein stellt kein Problem dar.
Die Datei ist eine Art Datenbank für Dokumente die sich ständig verändert. Ich muss also ein Makro schreiben welches Abhängig von den Zell Inhalten ein commandbutton erzeugt und dessen

Sub Button_click() schreibt und in der richtigen Zeile steht.
:o)
Danke schonmal im vorraus :o)
Adrian

		

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hyperlink auf *.dot dokumente als *.dot öffnen?
09.05.2005 16:31:32
MichaV
Hi,
so gehts auch ohne Buttons. Wenn Du eine Zeile mit .doc am Ende einfügst, dann wird nach Abfrage ein Link erstellt, der auf die Zelle an sich verweist. Beim Klick darauf wird aber ein Ereignis ausgelöst, das dann Deinen Shell- Befehl verarbeiten kann.


      
Private Sub Workbook_SheetChange(ByVal Sh As ObjectByVal Target As Range)
If Len(Target.Text) < 3 Then Exit Sub
'wenn ein Text eingegeben wurde, der länger als 3 Zeichen ist
If Not UCase(Right(Target.Text, 4)) = ".DOT" Then Exit Sub
'wenn der Text auf .doc endet
If Not MsgBox("Link zu " & Target.Text & " anlegen?", vbQuestion & vbYesNo) = vbYes Then Exit Sub
'Fragen, ob Link angelegt werden soll

Target.Hyperlinks.Add Target, "#" & Sh.Name & "!" & Target.Address, , , Target.Text
'Link erstellen, der auf diese Zelle verweist
'Notwendig, um Ereignis Workbook_SheetFollowHyperlink auszulösen
End Sub
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As ObjectByVal Target As Hyperlink)
'Nach Klick auf den toten Link Deine Shell- anweisung verarbeiten
Shell "D:\Programme\Microsoft Office\Office\WINWORD.XE /t" & """" & Target.TextToDisplay & """", 3
End Sub
'vielleicht auch wichtig, wenn Prog auf mehreren Rechnern laufen soll:
'Pfad zu Word.xe ermitteln http://www.chf-online.de/api/prgstart.htm 


Gruß! Micha
PS: Rückmeldung wäre nett.
PPS: Nicht wundern: Musste Word.(e)xe in Word.xe umbenennen, weil Meister Herber das so will.
Anzeige
AW: Hyperlink auf *.dot dokumente als *.dot öffnen?
09.05.2005 18:46:53
Adrian
Danke schonmal für die Mühe aber leider kein Erfolg
sicher eine elegante methode mit
Workbook_SheetFollowHyperlink aber ich krig's nicht hin.
Auch mich mal als dau zu outen aber
dieses sub läuft bei der Aktion Workbook_SheetChange oder?
>

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
>If Len(Target.Text) < 3 Then Exit Sub
>'wenn ein Text eingegeben wurde, der länger als 3 Zeichen ist
wo eingegeben ?
>If Not UCase(Right(Target.Text, 4)) = ".DOT" Then Exit Sub
>'wenn der Text auf .doc endet
ok kapiert
>If Not MsgBox("Link zu " & Target.Text & " anlegen?", vbQuestion & vbYesNo) = vbYes Then >Exit Sub
>'Fragen, ob Link angelegt werden soll
wann soll das geschehen ? Wenn ich zwischen den arbietsblättern hin und her wechsele rechnet er ein bischen un es tut sich kein Fenster auf
>Target.Hyperlinks.Add Target, "#" & Sh.Name & "!" & Target.Address, , , Target.Text
da muß ich passen :o)
>'Link erstellen, der auf diese Zelle verweist
>'Notwendig, um Ereignis Workbook_SheetFollowHyperlink auszulösen
>End Sub

>

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
>'Nach Klick auf den toten Link Deine Shell- anweisung verarbeiten
>Shell "D:\Programme\Microsoft Office\Office\WINWORD.XE /t" & """" & Target.TextToDisplay >& """", 3
>End Sub

Hier wird doch der Zielpfad als Parameter übergeben ...Target...
gibts vieleicht eine Möglichkeit dies in eine if then Verzweigung einzubauen
so in der Art
Sub Workbook_SheetFollowHyperlink()
if Hyperlink = *.dot then
e shell ....c:\ winword.xr /t Tagret
end if
End Sub
so dass vor jedem Hyperlinkklick diese Verzweigung abgerarbeitet wird
Danke Gruß Adrian
Anzeige
AW: Hyperlink auf *.dot dokumente als *.dot öffnen?
09.05.2005 19:13:30
MichaV
Hi Adrian,
kopiere einfach den Code ins DieseArbeitsmappe- Objekt. Also im VBA- Editor in den Bereich "DieseArbeitsmappe". Das sollte reichen.
Dann schreibst Du in irgendeine Zeile in Excel was rein. Wenn Du z.B. bla\bla.dot eintippelst, dann solltest Du gefragt werden, ob Du einen Hyperlink anlegen willst. Wenn Du was anderes eingibts, dann passiert nix. Wenn der Hyperlink angelegt ist, öffnet Excel bei Klick Word mit einer bla.doc, die aus der bla.dot erstellt wurde.
Probiers einfach mal aus ;o) Wenn es dann bei Dir läuft (und das sollte es), können wir ja immernoch ggf. ein paar Änderungen vornehmen.
Gruß- Micha
PS: Ich hab im ersten Beitrag öfter mal .doc geschrieben, meinte aber immer .dot.
PPS: Rückmeldung wäre nett.
Anzeige
AW: Hyperlink auf *.dot dokumente als *.dot öffnen?
09.05.2005 21:49:15
Adrian
ahaaaaaaa :o)
nun funktioniert schon fast gut :o)
Shell "D:\Programme\Microsoft Office\Office\WINWORD.XE /t" & """" & Target.TextToDisplay & """", 3
hab noch folgendes problem
Ich verwende ein makro um die Hyperlinks zu erzeugen und um die Zellen zu formatieren
Die Datenbank sieht wie folgt aus
Spalte A Beschreibung
Spalte B Dateinahme
Spalte C Pfad unter dem die Datei liegt
Mein Makro nimmt den Pfad (Spalte C) und verwendet diesen zusammen mit dem Dateinahmen (Spalte B) um den Hyperlink in der Spalte B zu erzeugen.
Jetzt müsste ich also vor Target.TextToDisplay den Wert aus der Zelle in Spalte C mit übergeben damit es funktioniert also in der art """ & WertzelleB & Target.TextToDisplay & damit die shell funktioniert
im Moment lande ich in der Fehlermeldung
Laufzeitfehler 53 Datei nicht gefunden
:o)
Super vielen lieben dank für die Mühe
Gruß Adrian
Anzeige
AW: Hyperlink auf *.dot dokumente als *.dot öffnen?
09.05.2005 22:34:24
MichaV
Hi,
schon fast gut? Na toll....
Also, wenn der Pfad rechts neben dem Dateinamen steht:
Shell "WINWORD.XE /t" & """" & Target.Range.Offset(0, 1) & "\" & Target.TextToDisplay & """", 3
Wenn der Pfad schon mit "\" endet, dann nimm das & "\" raus.
Gruß- Micha
PS: bin gespannt auf Deine Antwort ;o)
AW: Hyperlink auf *.dot dokumente als *.dot öffnen?
10.05.2005 17:58:55
Adrian
Also ich sags mal so
perfekt :o) *sichingrößterdemutvordemmeisterverbeugend*
Echt genial
Nun noch vielleicht ein paar fragen zu meinem Verständnis wie kann ich verhindern das diese Aktion ausgeführt wird. Also das ganze wieder rückgängig machen.
und wie kann ich dies automatisch aus einem Makro heraus ablaufen lassen.
Bis jetzt funktioniert meine Datenbank so:
Ein Commandbutton arbeitet mehrere Makros hintereinander ab
--- zuerst werden alle Verknüpfungen gelöscht
--- dann arbeitet ein Makro alle Pfade mit den zugehörigen Dateinamen ab und wenn diese existieren, dann werden auch die Verknüpfungen erzeugt.
---anschließend werden alle Formatierungen von einem Makro vorgenommen damit eventuelle Änderungen durch den Benutzer, wieder rückgängig gemacht werden (Spaltenbreite aussehen Cursorposition usw.)
jetzt müsste ein Makro laufen was aus allen Hyperlinks mit .dot am ende, diese Hyperlinks wieder löscht und mit dem Workbook_SheetFollowHyperlink Makro ersetzt.
vielen vielen dank :o)
kennst du vielleicht auch eine Beschreibung von den verwendeten Argumenten damit ich auch wirklich dahintersteigen kann was da genau passiert
Target.Hyperlinks.Add Target, "#" & Sh.Name & "!" & Target.Address, , , Target.Text
ist mir noch ein Rätsel und was das mit der Definition "sh as Objekt" und "Target as Range" zu tun hat
Gruß Adrian

Anzeige
AW: Hyperlink auf *.dot dokumente als *.dot öffnen?
10.05.2005 22:22:41
MichaV
Hi,
lass mal gut sein.
Hier das Makro, z.B. für Sheet1


      
Private Sub CommandButton1_Click()
'durchsucht alle benutzten Zellen
'Wenn eine Zelle einen Hyperlink enthält,
'dessen Text auf .dot endet, dann wird
'der Link in einen Verweis auf die eigene Zelle
'geändert.

Dim Zelle As Range
For Each Zelle In Sheets(1).UsedRange
'alle Zellen prüfen
  If Zelle.Hyperlinks.Count > 0 Then
  
'wenn Link vorhanden
    If UCase(Right(Zelle.Hyperlinks(1).TextToDisplay, 4)) = ".DOT" Then
    
'wenn Link-Text auf .DOT endet
      Zelle.Hyperlinks(1).Delete
      Zelle.Hyperlinks.Add Zelle, "#" & Me.Name & "!" & Zelle.Address, , , Zelle.Text
    
End If
  
End If
Next Zelle
End Sub 


Wegen der Argumente guck mal in der VBA- Hilfe nach!

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
Sh   Object erforderlich. Das Worksheet-Objekt, das den Hyperlink enthält.
Target   Hyperlink erforderlich. Das Hyperlink-Objekt, das das Ziel des Hyperlinks darstellt.

Gruß- Micha
PS: Rückmeldung wäre fein.
Anzeige
AW: Hyperlink auf *.dot dokumente als *.dot öffnen?
11.05.2005 00:45:36
Adrian
Echt vielen dank
jetzt hab ich es auch kapiert was da geschiet :o)
irgendwie hat das mit Sheets(1).UsedRange nicht funktioniert vermute ich zumindest
ich hab's angepasst und so klappt es bestens


      
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As ObjectByVal Target As Hyperlink)
    
'Dient in Zusammenarbeit mit dem Modul HyperlinkDotDokument dazu *.dot Dokumente als *.doc Dokumente zu öffnen
    'Nach Klick auf den toten Link wird die Shell- anweisung verarbeitet die bewirkt das die *.dot Dokumente richtig geöffnet werden
    
    
On Error GoTo ErrorHandler
        Shell """D:\Microsoft Office\Office\winword.exe"" /t" & """" & Target.Range.Offset(0, 1) & Target.TextToDisplay & """", 3
    
End
ErrorHandler:
    
    MsgBox (" Winword.exe befindet sich nicht im benötigten Pfad!")
    
End Sub
Private Sub HyperlinkDotDokumente()
    
'durchsucht Die Zellen in der Spalte B
    'Wenn eine Zelle einen Hyperlink enthält,
    'dessen Text auf .dot endet, dann wird
    'der Link in einen Verweis auf die eigene Zelle
    'geändert.
Application.ScreenUpdating = False
'Damit man nicht das Arbeitende Makro sieht

ActiveWorkbook.Sheets(2).Select
For i = 7 To Range(Range("B5000").End(xlUp).Address).Row
'alle Zellen prüfen

    ActiveWorkbook.Sheets(2).Cells(i, 2).Select
        
If Selection.Hyperlinks.Count > 0 Then
        
'wenn Link vorhanden
            
         
If Right(Selection.Hyperlinks(1).TextToDisplay, 4) = ".dot" Then
         
'wenn Link-Text auf .DOT endet
            Selection.Hyperlinks(1).Delete
            
'alten Hyperlink löschen
            ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _
            SubAddress:=ActiveSheet.Name & "!" & Selection.Address, TextToDisplay:=Selection.Text
            
'Verweis auf eigene Zelle
          End If
        
End If
Next i
Application.ScreenUpdating = 
True
'Damit das nachfolgende Formatierungsmakro richtig funktioniert
End Sub
 


So sieht das perfekt funktionierende Ergebnis aus
Vielen vielen dank Micha ;o)
Gruß Adrian :o)
Anzeige
AW: Hyperlink auf *.dot dokumente als *.dot öffnen
11.05.2005 02:38:25
Reinhard
Hallo Adrian,
alles ungestestet, quasi nur brainstorming, falls erlaubt .
Word und win kennen sich, also reicht
Shell ("winword.exe") 'brauchst da keinen Pfad, okay, müsste man prüfen welche Version
aufgerufen wird bei verschiedenen Versionen auf der Platte.
/t muss ich mal schauen was der macht.
Anstatt For i = 7 To Range(Range("B5000").End(xlUp).Address).Row
reicht  For i = 7 To Range("B65536").End(xlUp).Row
Target.Range.Offset(0, 1) könnte man mit Target.Offset(0, 1) ersetzen
ActiveWorkbook.Sheets(2).Select
For i = 7 To Range(Range("B5000").End(xlUp).Address).Row
'alle Zellen prüfen
ActiveWorkbook.Sheets(2).Cells(i, 2).Select
If Selection.Hyperlinks.Count > 0 Then
'wenn Link vorhanden
If Right(Selection.Hyperlinks(1).TextToDisplay, 4) = ".dot" Then
'wenn Link-Text auf .DOT endet
Selection.Hyperlinks(1).Delete
'alten Hyperlink löschen
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _
SubAddress:=ActiveSheet.Name & "!" & Selection.Address, TextToDisplay:=Selection.Text
'Verweis auf eigene Zelle
End If
End If
Next i
könnte man ändern zu
with ActiveWorkbook.Sheets(2)
For i = 7 To For i = 7 To .Range("B65536").End(xlUp).Row
'alle Zellen prüfen
if .Cells(i, 2).Hyperlinks.Count > 0 Then
'wenn Link vorhanden
If Right(.Cells(i, 2).Hyperlinks(1).TextToDisplay, 4) = ".dot" Then
'wenn Link-Text auf .DOT endet
.Cells(i, 2).Hyperlinks(1).Delete
'alten Hyperlink löschen
.Hyperlinks.Add Anchor:=.Cells(i, 2), Address:="", _
SubAddress:=.Name & "!" & .Cells(i, 2).Address, TextToDisplay:=.Cells(i, 2).Text
'Verweis auf eigene Zelle
End If
End If
Next i
end with
Gruß
Reinhard

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige