Wordfiles richtig öffnen!
Geschrieben von: Herbert Hahn Wer hat es noch nicht erlebt: Man hat auf einer Intranetseite einen Link auf eine Worddatei (*.doc oder *.dot). Wenn man diesen Link anklickt, dann wird Word direkt im Browserfenster geöffnet. Da hilft es auch nicht, das target als "_blank" vorzugeben, da dies dann den gleichen Effekt im neuen Browserfenster hat. Ein Weg, wie man ganz gemütlich Word 2000 als eigenständiges Programm öffnet und dann auch noch die Datei richtig öffnet ist über ein kleines clientseitiges Script (mit serverseitiger Hilfe, ist ja klar). Der Nachteil allerdings ist der, daß man die Berechtigungen für die lokalen Intranetsites beim IE korrekt konfigurieren muß. So richtig "gestolpert" bin ich über das Problem als ich firmeninterne Wordvorlagen (Dateiendung .dot) im Intranet veröffentlichen wollte. So intelligent das automatische Anzeigen eines Worddokuments im Browser auch sein mag, um so störender ist es wenn man diese Worddatei zum Editieren öffnen will. Konfiguration des Internet ExplorersWie bereits angekündigt, man muß den Internet Explorer etwas umkonfigurieren. Das geht folgendermaßen vonstatten: Unter Extras / Internetoptionen auf Sicherheit gehen, und dort dann auf Sites... klicken und die neue vertrauenswürdige Site einfügen (in diesem Beispiel ist es sw1): Ein weiterer Schritt ist im Tab Sicherheit noch zu erledigen - die Sicherheitsstufe muß angepasst werden ("Stufe Anpassen"): Mit diesen Einstellungen ("sehr niedrig") kann man die Seite mit dem clientseitigen Script dann korrekt aufrufen. Das Client-ScriptDas Hauptproblem ist in unserem Fall wie man am Client Word startet, und zwar eigenständig, und nicht im Browser. Dazu habe ich ein clientseitiges (IE-only) Script geschrieben, und die Funktion heißt sinnvollerweise load_word: <script Language=VBScript> function load_word(mode, pfad) 'mode 0 = normal document open 'mode 1 = open as document template Die Funktion nimmt zwei Parameter entgegen: mode bestimmt, ob wir ein normales Worddokument oder eine Vorlage für ein neues Dokument erhalten, und pfad natürlich den Pfad zur zu öffnenden Datei. Set appWord = CreateObject("Word.Application") appWord.WindowState = 0 appWord.Height = 600 appWord.Width = 800 appWord.Left = 40 appWord.Top = 20 appWord.Visible = True ' Display the application. Danach öffnen wir die Word Applikation. Mit den Parametern height, width usw bestimmen wir die Größe und den Erscheinungsort des Fensters. ' Open the document. ' mode 1 = dot file, 0 = docfile If mode = 1 Then appWord.Documents.Add (pfad) If mode = 0 Then appWord.Documents.Open (pfad) Hier wird - abhängig ob Vorlage oder Dokument - ein Dokument nach Vorlage erstellt oder einfach geöffnet. Der Unterschied ist die Verwendung der Add und Open Methoden. ' Close the object variable. Set appWord = Nothing end function </Script> Und zum Schluß wird noch aufgeräumt. AnwendungSinnvollerweise bettet man das clientseitige Script in die Downloadseite für Dokumente und Vorlagen ein. Dort kann man dann die Links dynamisch generieren (zB wenn die Dokumente in der Datenbank verwaltet werden). Das folgende Codebeispiel (wordopen.asp) stammt aus einem Projekt das geringe Anforderungen (Speicherung der Dokumente auf Netzwerkshares) hat. Die Variable URL hält den gesamten Pfad der Datei, inklusive Filenamen. Das sähe also zb so aus: \\Server\Freigabe\Pfad\file.doc Natürlich funktioniert auch H:\ Pfad\file.doc Allerdings muß in diesem Fall auf allen Rechner das gleiche Laufwerkmapping eingestellt sein. Das Beispiel in wordopen.asp generiert einen Link sowohl für ein Template als auch ein Dokument, die beide auf einem Netzwerkshare liegen, das mittels UNC Pfad angesprochen wird: <% Pfad = "\\Sw1\www\softwing\wordopen\" dot="meinFile.dot" doc="meinFile.doc" url1 = pfad & dot url2 = pfad & doc %> <table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <td width="25%">Wordopen Demo</td> <td width="27%">1. DOT:</td> <td width="48%"> <input type=image onClick="load_word '1', '<% = Url1 %>'" src="./disk.gif" name="image"> </td> </tr> <tr> <td width="25%"> </td> <td width="27%">2. DOC:</td> <td width="48%"> <input type=image onClick="load_word '0', '<% = Url2 %>'" src="./disk.gif" name="image2"> </td> </tr> <tr> <td width="25%"> </td> <td width="27%"> </td> <td width="48%"> </td> </tr></table> Im Ereignis "onClick" rufen wir das clientseitige Script auf. Und siehe da, Word läßt sich ohne weiteres öffnen und sogar korrekt mit Dokumentvorlagen beschicken. Diese werden nun als Dokument mit der angegebenen Vorlage als "Dokument1" geöffnet. Der Vollständigkeit wegen sei hier noch angemerkt, daß es sehr klug ist wenn man an dieser Stelle noch mittels FileSystemObject prüft, ob es die entsprechende Datei (Vorlage oder Dokument) am Server auch wirklich gibt. SchlußbemerkungWenn Sie mit diesen Codefragmenten experimentieren, dann überzeugen Sie sich gelegentlich ob in Ihrem System nicht unzählige Word-Tasks laufen. Sollte es nämlich passieren daß die Funktion word_open mit dem Fehler daß die Datei nicht existiert terminiert, bleibt die Wordinstanz einfach stehen. So geschehen bei mir, nach längerem experimentieren. Wer nun auf die Idee kommt das gezeigte auch mit Excel-Dateien zu probieren wird schnell merken, daß Excel diesbezüglich seine eigenen Wege geht. Dazu mehr im nächsten Artikel. Download des CodesKlicken Sie hier, um den Download zu starten. Verwandte Artikel
Mit ASP ein Word Dokument am Server generieren Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |