none
Word 2010, Datei, Neu, nicht allgemeine Registerkarte RRS feed

  • Frage

  • Hallo zusammen

    Ich möchte automatisieren, dass sich das Dialogfenster Neu in Word 2010 nicht auf der allgemeinen Registerkarte, sondern auf einer anderen Registerkate = Unterordner, öffnet.  Wer hat einen Ansatz für den Macrocode? Sobald der Makro existiert, kann er ohne Probleme ins Menüband oder in die Symbolleiste für den Schnellzugriff integriert werden.

    Gruss
    Ursula

    Montag, 9. August 2010 08:25

Alle Antworten

  • Hallo Ursula,

    "UrsulaK" schrieb

    Ich möchte automatisieren, dass sich das Dialogfenster Neu in Word 2010 nicht auf der allgemeinen
    Registerkarte, sondern auf einer anderen Registerkate = Unterordner, öffnet.

    dafür gibt es keinen Befehl. Man müsste im Makro mit SendKeys arbeiten, was aber insofern unzuverlässig ist, weil während einer Word-Sitzung jeweils die zuletzt verwendete Registerkarte aktiv bleibt. Siehe beispielsweise:
    http://groups.google.de/group/microsoft.public.word.vba.general/browse_thread/thread/2b8114aceeb1a7a0/31cd32d40f748049?hl=de#31cd32d40f748049 oder http://www.eggheadcafe.com/software/aspnet/32228837/new-file-dialog-in-word-2007.aspx


    Viele Grüße
    Lisa [MS MVP Word]

    Montag, 9. August 2010 09:54
  • Hallo Ursula,

    kannst du das bitte genauer beschreiben, was du vorhast? Bislang verstehe ich dich so, dass du den Teilbereich der Backstage-Ansicht (Datei-Menü) für "Neu" an eine andere Stelle positionieren möchtest. Hier sprichst du von einer anderen Registerkarte, also einem anderen "Hauptmenüpunkt" des Menübands. Die anderen Registerkarten verfügen aber über keine Backstage-Ansicht. Nur das Datei-Menü. Deshalb kann ich dir nicht folgen, was du erreichen möchtest.

    Viele Grüße

    Jan

    Montag, 9. August 2010 09:59
  • Hallo Jan

    Ich möchte automatisieren, dass sich das Dialogfenster Neu in Word 2010 nicht auf der allgemeinen
    Registerkarte, sondern auf einer anderen Registerkate = Unterordner, öffnet.

    präzisierte Frage:

    Wenn ich auf das Menü Datei, Neu, Meine Vorlagen klicke, so öffnet sich das Dialogfenster Neu standardmässig auf der Registerkarte Allgemein (Persönliche Vorlagen). Wie kann ich eine andere Registerkarte aktivieren?

    Gruss
    Ursula

    Montag, 9. August 2010 10:56
  • Hallo Lisa

    Danke für die Infos. Schade, dass die zuletzt verwendete Registerkarte aktiv bleibt. Ich werde weitere Ansätze versuchen.
    Gruss
    Ursula 

    Montag, 9. August 2010 11:02
  • Hallo Ursula,

    alles klar. Den Ausführungen von Lisa kann ich mich nur anschließen. Darüber hinaus kann ich nur folgenden Workaround anbieten:

    Der Ansatz mit SendKeys bleibt wie unter den von Lisa genannten Links bestehen. Als erstes sendest du allerdings die Tastenkombination "Umschalt + Tab", um die Registerkarten auswählen zu können. Dann sendest du eine sichere (hohe) Anzahl von "Pfeil nach links" um sicherzustellen, dass die erste Registerkarte aktiviert ist. Somit hast du immer die gleiche Ausgangssituation. Hier gibt es natürlich immer noch einige Schwachstellen. So können die Anwender eine unterschiedliche Anzahl von Unterordnern haben, sodass die Reihenfolge bzw. Position nicht immer gleich ist.

    Das lässt sich dann nur noch mit entsprechenden Programmierkenntnissen absichern. Fertigen Code kann ich dir aufgrund des Umfangs jetzt nicht anbieten, aber die grundsätzliche Vorgehensweise sähe so aus:

    Anzahl der Unterordner und deren Namen, die sich in "Templates" befinden auslesen. Bei alphabetischer Sortierung entspricht die Position des gewünschten Ordners dann der Anzahl von "Pfeil nach rechts" mit SendKeys. Systemordner wie "LiveContent", die im Dialogfenster nicht angezeigt werden, müssen natürlich entsprechend berücksichtigt werden. Durch das Auslesen der Anzahl von Unterordner ist dann auch die genaue (maximale) Anzahl der "Pfeil nach links" bekannt, um stets auf der ersten Registerkarte zu starten und nicht unnötig viele Tastaturbefehle senden zu müssen.

    Jetzt ist das einzige Manko nur noch, dass der Code auf das Dateisystem zugreift. Je nach Konfiguration der Sicherheitseinstellungen sind dann eventuell weitere Punkte zu berücksichtigen und per Code abzudecken. Z.B. das Ausführen von Code mit bestimmten Privilegien. Geht dann aber über VBA hinaus und es müssen Funktionen aus Win32 oder .NET verwendet werden. Darüber hinaus könnte man noch sicherstellen, dass Word den Fokus behält, damit nicht aus Versehen Aktionen in anderen Programmen ausgeführt werden (ist mit SendKeys nämlich möglich). Für eine simple Lösung, kann man diese Punkte sicherlich vernachlässigen, aber im Hinterkopf sollte man die Schwachstellen stets haben.

    Viele Grüße

    Jan

    Montag, 9. August 2010 11:51
  • Hallo Jan

    Danke für die Ausführungen.
    Da muss ganz bestimmt ein versierter Programmierer ran.
    Ich behalte die Problematik einmal im Hinterkopf und werde mich weiter informieren.

    Gruss
    Ursula

    Montag, 9. August 2010 12:11
  • Hallo Ursula,

    ich würde wahrscheinlich dafür eine eigene Userform nachbauen, die das betreffende Verzeichnis zur Verfügung stellt. Der Aufwand ist nicht so wahnsinnig, dafür funktioniert es dann wesentlich zuverlässiger als SendKeys.

    Aber für den Augenblick könntest Du auch als Workaround so vorgehen: Das Makro ändert temporär den Benutzerordner, und zwar auf den von Dir gewünschten Unterordner, und öffnet mit diesem den Dialog. Der Nutzer kann dann eine Vorlage auswählen, danach setzt das Makro den Pfad wieder zurück. Ich habe jetzt hier im Vorlagenverzeichnis einen Unterordner "Test" angelegt. Du passt natürlich den Namen des Unterordners noch an.

    Ich bin im Augenblick noch auf Arbeit und kann es hier unter W2010 nicht probieren (unter W2000 funktioniert es), also probier bitte mal das hier:

    Sub Test()
    
      Dim altPfad As String
      Dim neuPfad As String
      Dim strUnterordner As String
      
      strUnterordner = "Test"
        
      altPfad = Options.DefaultFilePath(wdUserTemplatesPath)
       'Sichern der vorherigen Einstellung
      neuPfad = altPfad & Application.PathSeparator & strUnterordner
      Options.DefaultFilePath(wdUserTemplatesPath) = neuPfad
       'Verzeichnis wird geändert
      Dialogs(wdDialogFileNew).Show
      DoEvents
      Options.DefaultFilePath(wdUserTemplatesPath) = altPfad
       'Vorherige Einstellung wieder setzen
    
    End Sub
    
    

    Der Nachteil liegt auf der Hand. In diesem Fall sieht der Nutzer nur den Unterordner. Auf die anderen Ordner und den Überordner hat er in diesem Augenblick keinen Zugriff.

    Gruß
    Lisa (NR)

    Montag, 9. August 2010 19:01
  • Hallo Lisa

    Unter 2000 klappt es bei mir auch.
    Klappt bei mir leider unter 2007 und auch 2010 nicht. Obschon ich einen Ordner Test erstellt habe, missachtet Word den Ordner und fokussiert die Registerkarte Allgemein. Habe mit verschiedenen Profilen getestet, da ich unsicher war, ob meine EInstellung noch Standard sind. Es sollte keine Rolle spielen, wenn ich sowohl den Benutzer- wie auch den Arbeitsgruppenpfad bearbeitet habe, oder doch? In anderen Testprofile war zumindest alles Standard. Hast Du noch eine andere Idee?
    Beim Suche bin ich noch auf folgende Info gestossen:
    http://groups.google.com/group/microsoft.public.de.word.vba/browse_thread/thread/92c80f9f6e2ffe74/c8f17aff681cd896?lnk=gst&q=wdDialogFileNew2007#c8f17aff681cd896 gibt Infos zu Dialogfenster filenew.
    Ich verfolge die Diskussion gespannt weiter, wobe ich selbst wenig beitragen kann, da ich schlicht und ergreifend zu wenig VBA-Kenntnisse besitze.
    Gruss
    Ursula

    Dienstag, 10. August 2010 10:55
  • Hallo Ursula,

    ich habe das gleiche Problem und nutze (mit den beschriebenen Nachteilen) auch bisher eine Lösung mit sendkeys. Allerdings funktioniert die jetzt unter Word2010 auch nicht mehr richtig. Ich müsste jetzt wahrscheinlich zusätzlich noch eine Versionsabfrage einbauen und für Word2010 eine andere Zeichenfolge sendet, als bei Word2000 bis 2007.

    Deshalb hat mich der Vorschlag von Lisa neugierig gemacht eine eigene Userform zu erstellen. Da müsste man dann aber zum Anfang eine Abfrage einbauen, wenn Word allgemein benutzt werden soll, dann der übliche "Datei-->"Neu"-Befehl, ansonsten die eigene userform, ansonsten kommt man ja nicht mehr an die anderen Vorlagen, oder ?

    Gruss Thomas !

     

     

    Dienstag, 10. August 2010 14:18
  • Hallo zusammen,

    schade. Wie sieht's denn aus, wenn man einfach den (nicht so widerspenstigen) Dateiauswahldialog nimmt:

    Sub NeuesDokumentAusVorlagenverz()
    
      Dim strDatei As String
      Dim altPfad As String
      Dim neuPfad As String
      
      altPfad = CurDir
       'Sichern vorherige Einstellung
      neuPfad = Options.DefaultFilePath(wdUserTemplatesPath) & Application.PathSeparator & "Test"
    
      ChangeFileOpenDirectory neuPfad
      With Dialogs(wdDialogFileOpen)
        If .Display = 0 Then
          ChangeFileOpenDirectory altPfad
          Exit Sub
        End If
        strDatei = .Name
      End With
      
      Documents.Add Template:=strDatei
      ChangeFileOpenDirectory altPfad
    
    End Sub
    
    
    jetzt mal vom anderen Aussehen abgesehen. Das Unterverzeichnis "Test" muss natürlich in diesem Fall ein Unterverzeichnis des in den Wordoptionen eingetragenen Verzeichnisses Benutzervorlagen sein. Man könnte auch einen statischen Pfad in der Variable eintragen.

    @Thomas: Wenn man selbst eine Userform baut, könnte man sie natürlich so bauen, dass man auf alle Vorlagen Zugriff hat, also die Funktionalität schon analog zum Word-Dialog angelegt. Bei einer eigenen Userform könnte man selbstverständlich die Multipage, die im Vordergrund sein soll, auswählen.

    Gruß
    Lisa

    Dienstag, 10. August 2010 17:11
  • Hallo Lisa,

    ja da war ich wohl etwas engstirnig. Wenn man den Dialog kompl. nachbaut braucht man keine Fallunterscheidung machen. Wie komme ich jedoch an die übrigen Register ? Es werden ja nicht nur die Unterordner im Vorlagenpfad angezeigt, sondern je nach Installation auch "Briefe", "Lebensläufe" usw. Wie ermittle ich diese um den Dialog kpl. nachbauen zu können ?

    Gruss Thomas !

     

    Mittwoch, 11. August 2010 05:07