Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Wordfiles richtig öffnen!

Geschrieben von: Herbert Hahn
Kategorie: ASP Tricks

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 Explorers

Wie 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-Script

Das 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.

Anwendung

Sinnvollerweise 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%">&nbsp;</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%">&nbsp;</td>
    <td width="27%">&nbsp;</td>
    <td width="48%">&nbsp;</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ßbemerkung

Wenn 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 Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Mit ASP ein Word Dokument am Server generieren
Serverdaten clientseitig in Exceltemplates importieren

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.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.