MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Word
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 03.02.2018, 13:04   #1
vbuser007
MOF User
MOF User
Standard Word 2013 - Fill-In Felder per VBA einfügen ohne Dialog

Hallo,

ich würde gerne ein Fill-In Feld per VBA generieren und ein beliebiges Dokument einfügen lassen.
Die Voreinstellungen für das Fill-In Feld habe ich auf einer UserForm schön auswählbar gestaltet, ähnlich der Word eigenen Funktion jedoch mit Auswahlmöglichkeiten für diverse optionale Schalter und Formatierungsschalter. Das Einfügen in ein beliebiges Dokument funktioniert auch.

Das Problem was ich nur habe ist, das nach dem das Fill-In Feld in das Dokument eingefügt wird, sofort der typiscche Dialog eingefügt wird, in dem man dann den entsprechenden Wert einfügen kann. Genau diesen Dialog möchte ich zu diesem Zeitpunkt jedoch nicht haben. Er ist für mich zu diesem Zeitpunkt (Bei Erstellung einer Vorlage) überflüssig.

Kann man diesen Dialog unterdrücken oder sonst irgendwie auf silent setzen?

Code:

    Application.DisplayAlerts = False
    Dim AddThis As Field
    Set AddThis = Selection.Fields.Add(Selection.Range, wdFieldEmpty, tbOutput.Text, wdSortByName)
    Application.DisplayAlerts = True
Das mit dem Application.DisplayAlerts habe ich testweise eingefügt, jedoch verhindert dies auch nicht das erscheinen des Dialogs.

Weiß jemand wie man diesen unterdrücken kann?

Viele Grüße
vbuser007 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 03.02.2018, 16:21   #2
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo vbuser,

wie man das unterdrückt weiß ich nicht, aber bei mir funktioniert es, das Dialogfeld per SendKeys gleich wieder zu schließen (erspart halt 1 Mausklick):
Code:

Sub hauweg()
SendKeys "{TAB}" 'raus aus dem Eingabefeld
SendKeys "{Enter}" 'drauf auf OK
ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
"ASK  Eingabe d Hans "   
End Sub
Interessanterweise müssen die SendKey-Eingaben vor dem Öffnen des Dialogfelds notiert werden.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.02.2018, 19:13   #3
vbuser007
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Gerhard,
danke für deine Mühe...

SendKeys verwende ich immer nur im Notfall...

Mir ist noch eine andere Idee eingefallen. Die funktioniert tadellos ohne Rückfrage.

Code:

    Dim DoIt As Boolean
    DoIt = True
    Dim ThisMsgBox As String
    If ActiveDocument.Bookmarks.Exists(Frame_Textmarkenname.ControlTipText) Then
        ThisMsgBox = MsgBox("Die Textmarke ist bereits vergeben!" & vbCrLf _
        & "Um den Vorgang fortzuführen wird die bereits im Dokument vorhandene Textmarke gelöscht und für das neue Feld verwendet." & vbCrLf & vbCrLf _
        & "Möchten Sie den Vorgang fortsetzen?", vbCritical + vbYesNoCancel)
        If ThisMsgBox = vbNo Then DoIt = False
    End If
    
    If DoIt = True Then
        'Generiere temporären Bookmark Namen
        Dim x As Long
        Dim Bookmark_temp_name As String
        
        Dim i As Integer
        Do
            x = Int(1000 * Rnd()) + 1
            Bookmark_temp_name = Replace("Delete_me_iam_temp_" & Str(x), " ", "", 1, -1, vbTextCompare)
            If Not ActiveDocument.Bookmarks.Exists(Bookmark_temp_name) Then Exit Do
        Loop
        'Generiere temporären Bookmark Namen
        
        Dim AddThis As Field
        Set AddThis = Selection.Fields.Add(Selection.Range, wdFieldEmpty, "          ", wdSortByName)
        AddThis.Locked = True
        AddThis.Select
        
        If Frame_Textmarkenname.ControlTipText <> "" Then
            With ActiveDocument.Bookmarks
                .Add Range:=Selection.Range, Name:=Frame_Textmarkenname.ControlTipText
                .DefaultSorting = wdSortByName
                .ShowHidden = False
            End With
        End If
        
        Dim rng_inField As Range
        Selection.SetRange Selection.Range.Start + 2, Selection.Range.End - 2
        Dim ThisBookmark As Bookmark
        Set ThisBookmark = Selection.Bookmarks.Add(Bookmark_temp_name)
        
        ActiveDocument.Bookmarks(Bookmark_temp_name).Range.Text = tbOutput.Text
        If ActiveDocument.Bookmarks.Exists(Bookmark_temp_name) Then ActiveDocument.Bookmarks(Bookmark_temp_name).Delete
        
        AddThis.Update
        Selection.MoveRight Unit:=wdCharacter, Count:=1
        
        Unload Me
    End If
vbuser007 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:00 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.