| 

.NET C# Java Javascript Exception

0
Der Startupordner ist in jeder M$-Office- und Windows-Versions-Kombination woanders. Unter 2000 hatte Word noch einen eigenen!? Unter neueren Versionen gibt es einen Standard-Startupordner, der in der registry nirgends zu finden ist. Ich benötige eine Lösung, die mir den String des kompletten Pfads zum Word- bzw. Office-Startupordner unter Windows liefert, am besten für eine Batch. Oder hab ich den registry-Schlüssel nur noch nicht gefunden? Mein Problem ist, ich hab auch nicht jede Kombination hier, und hab keine virgin zur Verfügung, um mal eben zu spielen und einfach mal alles durchzuschauen. Und bei M$ hab ich nichts Systematisches gefunden.

Mir schwebt eine .exe, ein rundll32-Aufruf, ein API-Aufruf, eine Nebenfunktion eines Befehlszeilenprogramms vor, das mir das Gewünschte sicher liefert. Oder eben ein registry-Schlüssel, der es immer hergibt. Oder eine verlässliche Information, vielleicht war ich nur blind beim Googlen und Blättern, eine Zusammenstellung, anhand derer ich den Pfad selbst sicher ermitteln kann.
30.07.2011
Gast
1 1 1
6 Antworten
0
Mir ist nicht ganz klar was Du machen möchtest aber innerhalb von Word-VBA kannst Du mit
Options.DefaultFilePath(wdStartupPath)
auf den Startup-Ordner zugreifen.
30.07.2011
Torsten Menze 113 1 5
Hallo Torsten, wegen der Zeichenzahlbegrenzung und begrenzten Formatierung bei Kommentaren Antwort als "Antwort".
mupan 01.08.2011
0
Hallo Torsten,

ja, das kenne ich, trotzdem danke. Im Moment sieht das bei mir so aus:

Public Sub AutoOpen()
Dim strStartupDir As String
strStartupDir = Options.DefaultFilePath(wdStartupPath)
FileCopy "Q:\wordstart\Macros.dot", strStartupDir
If Dir(strStartupDir & "\Macros.dot") <> "" Then
MsgBox _
"Copied Macros.dot successfully from Q:\Wordstart\ to your Office Startup folder, " & strStartupDir, _
vbOKOnly, "Success"
Else
MsgBox _
"Could not copy Macros.dot from Q:\Wordstart\ to your Office Startup folder, " & strStartupDir & ", " _
& "please adjust macro security settings and try again, and / or try manually.", _
vbOKOnly, "Failure"
End If
ThisDocument.Close
End Sub


FileCopy schlägt fehlt, der Pfad sei nicht zugänglich. Einfache Ursachen wie ein fehlerhaftes Laufwerksmapping oder schlichte Tippfehler beim Namen hab ich ausgeschlossen.

Aber auch wenn dieser Word-Makro läuft, ist es unbefriedigend. Die in der zu kopierenden .dot enthaltenen Makros sind lediglich eine Beigabe zu einem Access-M§SQL-Server-Produkt. Eigentlich möchte ich diese Dateikopie in das Setupskript einbinden, ohne ein Word- oder irgendein Fenster zu öffnen. Das Skript soll sich bei Problemen so konkret wie möglich melden, klar, aber bei Erfolg einfach leise zum nächsten Schritt übergehen. Von mir bislang angesehene Installer bzw. Installerskriptengines fokussieren auf System- und Programmordner, der Office- bzw. Word-Startuppath wird da nicht ermittelt, z.B. mit Hilfe einer Variablen.

Wenn es nicht anders geht, kapsele ich ein Installationsskript in einem Word-Dokument mit Erläuterungstext und Button. Dann würde ich aber nicht mehr Dateien aus Netzlaufwerken kopieren und mich so von der Umgebung noch stärker abhängig machen, sondern eine neue Datei in den Startupordner hinein erzeugen wollen und die Elemente aus dem Installationsdoc heraus dort hineinkopieren.

Danke. mupan
01.08.2011
mupan 575 1 8
mupan 575 1 8
Hallo Mupan, das hier kann nicht funktionieren: If Dir(strStartupDir & "\Macros.dot") <> "" ...

Jaksa 01.08.2011
Hallo Jaksa, danke für den Hinweis, aber so weit bin ich ja, siehe oben, gar nicht gekommen ;-)
mupan 01.08.2011
0
01.08.2011
Jaksa 4,0k 2 8
0
Hallo Mupan...

könntest auch prüfen, ob Du die erforderlichen Rechte hast, um in den Ordner kopieren zu dürfen.

Gruß
02.08.2011
maninweb 1 1 1
0
Peinlich ... Word-VBA-FileCopy verlangt auch die Angabe eines Namens beim Ziel. Ungewöhnlich, aber so ein schlichtes Syntaxissue hätte ich natürlich trotzdem checken müssen, bevor ich das hier als Frage einstelle.

Ein Fenster geht jetzt auch nicht mehr auf, das Word-Symbol in der Taskleiste, bis die Messagebox abgenickt ist, finde ich sogar gut.

Public Sub AutoOpen()
Dim strStartupDir As String
Application.Visible = False
strStartupDir = Options.DefaultFilePath(wdStartupPath)
FileCopy "Q:\wordstart\Macros.dot", strStartupDir & "\Macros.dot"
If Dir(strStartupDir & "\Macros.dot") <> "" Then
MsgBox _
"Copied Macros.dot successfully from Q:\Wordstart\ to your Word / Office Startup folder, " & strStartupDir, _
vbOKOnly, "Success"
Else
MsgBox _
"Could not copy Macros.dot from Q:\Wordstart\ to your Word / Office Startup folder, " & strStartupDir & ", " _
& "please adjust macro security settings, check your folder rights for source and target folder, and try again, and / or try manually.", _
vbOKOnly, "Failure"
End If
Application.Visible = True
ThisDocument.Close
End Sub


Danke für alle Anregungen.

Jaksa, Dir() geht ohne Probleme, hab auf falsch Positive und auf falsch Negative getestet, scheint zu passen. Kannte ich auch so aus Access-VBA. Irgendein Hinweis, irgendwas, was ich jetzt nicht sehe?

Jaksa, danke ... das Problem ist zusätzlich, ich müsste mindestens diesen zweistufigen Test unter Berücksichtigung der Besonderheiten jeder Office-Windows-Kombination seit Office 2000 und Windows XP durchführen ... viel zu fehlerträchtig.

maninweb, hatte ich unter die allfälligen Fehler gerechnet, aber das konntest du nicht wissen. Ist in meine Fehlermeldung (siehe oben) mit eingeflossen.

Also ich betrachte das jetzt als zufriedenstellend gelöst. Zielgruppe ist nicht der Endanwender, sondern der Admin, der die Preproductinstallation für uns durchführt. Also dürfte es mit Fehlern kein Problem geben, wird gecheckt und nochmal aufgerufen, oder bei mir angerufen, bis es passt.

Oder, sieht einer Probleme?

Danke,

mupan
02.08.2011
mupan 575 1 8
mupan 575 1 8
0
Hallo Mupan...

naja peinlich braucht's Dir m.E. nicht zu sein, passiert jedem. Im Quelltext hatte ich es auch übersehen. Schön, dass es jetzt klappt.

Gruß
02.08.2011
maninweb 1 1 1
Hallo Mou... äh, maninweb, danke für die aufmunternden Worte ;-)
mupan 03.08.2011

Stelle deine Windows-Frage jetzt!