Programm per Hyperlink aus Word-Dokument öffnen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Nils_Kr.

    Programm per Hyperlink aus Word-Dokument öffnen

    Hi,
    ich habe ein Programm in dem sich folgende 2 Zeilen befinden:

    VB.NET-Quellcode

    1. Dim fileReader As String
    2. fileReader = My.Computer.FileSystem.ReadAllText("file.txt")


    Wenn man das Programm öffnet wird die Datei ausgelesen und der Text verwertet. Soweit so gut. Das Problem ist, dass die 2 Zeilen nicht funktionieren, wenn man das Programm über einen Hyperlink öffnet, der sich in einem Word-Dokument befindet. Dann wird behauptet, dass die Datei nicht gefunden werden konnte. Wenn ich das Programm über eine Verknüpfung beispielsweise vom Desktop aus öffne, gibt es das Problem nicht. Da ich den Fehler nicht in Visual Studio simulieren kann, habe ich momentan keine Ahnung, wie ich der Angelegenheit beikommen soll.
    Ein Programm über Word zu öffnen ist für meinen Geschmack ungewöhnlich, aber ich habe ein paar Nutzer, die es definitiv so haben möchten.
    Option strict = on

    If it's stupid and it works it ain't stupid.
    Die Methode ReadAllText erwartet eine Pfadangabe, in deinem Fall "file.txt". Diese Pfadangabe ist, da sie nicht mit einem Laufwerk ("C:", "D:" usw.) beginnt, eine relative Pfadangabe. Sie wird damit an den Pfad angehängt, in dem das Programm ausgeführt wird, dies ist meist auch das Verzeichnis, in dem das Programm sich befindet. Ich nehme an, dass der Hyperlink dafür sorgt, dass das Programm von dem Pfad der Word-Datei aus ausgeführt wird, indem sich "file.txt" nicht befindet und somit nicht gefunden werden kann.
    Falls die Datei Einstellungen oder Ähnliches beinhaltet und sie zu irgendeiner Zeit vom Nutzer oder vom Programm generiert wird, könntest du sie nicht direkt relativ zum Programm platzieren, sondern im AppData-Ordner des Nutzers. Schau dir dazu mal die Environment.SpecialFolder-Enumeration an ;)
    @Nils_Kr Teste Deine Programme, indem Du sie z.B. nach C:\Temp kopierst und dort ausführst. Wenn was nicht stimmt, wirst Du es ganz schnell merken, insbesondere noch bevor Du das Programm weitergibst. :thumbsup:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Wenn was nicht stimmt, wirst Du es ganz schnell merken

    Bei dir gehört es zur normalen Testroutine ein Programm aus Word heraus zu öffnen? 8| Abgesehen vom Hyperlinkproblem lässt sich das Programm von überall problemlos starten.

    Bis jetzt habe ich es vermieden lokale Daten anzulegen, da sich das Programm auf einem Netzlaufwerk befindet und der Nutzerzugang unabhängig vom Desktop ist.

    Was mich wundert:
    PictureBoxLogo.Image = Image.FromFile("LogoProg.jpg") ist doch ebenfalls relativ und funktioniert trotzdem problemlos beim Öffnen per Word.
    Option strict = on

    If it's stupid and it works it ain't stupid.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nils_Kr“ ()

    Lässt sich tatsächlich das Programm von überall starten oder nur eine Verknüpfung des Programmes? Eine Verknüpfung ruft das Programm an der Stelle auf, an der es liegt, bzw. wenn du zu 'Rechtsclick' -> 'Eigenschaften' navigierst, siehst du unter 'Ausführen in:' den entsprechenden Ort.

    Edit: Weiterer Tipp: Normalerweise sollte die Exception dir genau mitteilen, welche Datei (mit absoluter Pfadangabe) nicht gefunden wurde, also wo genau gesucht wurde :)
    DAs Programm lässt sich prinzipiell von überall öffnen, solange es sich mit den erforderlichen DLLs in einem Ordner befindet. Die Idee mit der Verknüpfung ist perfekt. Ich habe in den gleichen Ordner einfach noch eine Verknüpfung der exe gelegt und wenn man diese per Word öffnet können alle files geladen werden. :thumbsup:

    Ist vielleicht nicht die schönste Lösung aller Zeiten, aber es ist effizient und funktioniert.
    Option strict = on

    If it's stupid and it works it ain't stupid.

    Nils_Kr schrieb:

    Bei dir gehört es zur normalen Testroutine ein Programm aus Word heraus zu öffnen?
    Nein.
    Wohl aber das Kopieren nach C:\Temp und das Ausführen dort.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hätte in diesem Fall nur nichts geholfen, weil die relativen Pfadangaben dadurch nicht beeinflusst werden. Bevor ich ein Update live schalte teste ich das Programm auf verschiedenen Rechnern um sicher zu gehen, dass alle benötigten Komponenten im Paket enthalten sind.
    Option strict = on

    If it's stupid and it works it ain't stupid.