2016-06-18 2 views
0

Ich habe einfache Vorlage (Open word file--> Alt + F11 --> Save file as .dtom) erstellt, um einen Kommentar zum ausgewählten Text hinzuzufügen. Ich habe Datei als .dotm speichern und auf Start Ordner C:\Users\abc\AppData\Roaming\Microsoft\Word\STARTUP setzen, aber ich bekomme Fehler von Makro Einstellung von MS Word 2013. Ich habe gefolgt, wie sie vorgeschlagen, aber immer noch nicht funktionieren.Wie Kommentar für ausgewählten Text mithilfe von VBA in MS Word 2013 hinzufügen?

Ich habe meinen Code beigefügt. Kann jemand vorschlagen, wenn ich etwas von Code-Seite vermisse?

Code:

Sub autoexe() 
    Dim MainMenu As CommandBarControl 
    Dim MenuItem As CommandBarPopup 
    'add pop button 
    MenuItem = MainMenu.Controls.Add(msoControlPopup, , , , True) 
    With MenuItem 
     .Caption = "Item1" 
     .Visible = True 
     'add simple button 
     Dim simpleButton As CommandBarButton 
     Dim commentText As String 
     commentText = "Comment inserted successfully" 
     simpleButton = MenuItem.Controls.Add(msoControlButton, , , , True) 
     With simpleButton 
      .Caption = "Show Message" 
      .Visible = True 
      .OnAction = "addComments(commentText)" 
     End With 
    End With 
End Sub 


Sub addComments(ByVal cmtText As String) 
    ActiveWindow.View.Type = wdPageView 
    Selection.Comments.Add Range:=Selection.Range 
    If (Len(Selection) > 0) Then 
     MsgBox ("inside comment") 
     With Selection 
      .TypeText (cmtText) 
     End With 
    End If 
End Sub 

enter image description here

+0

Haben Sie beim Öffnen der Datei 'Enabled Contents' aktiviert? Hat Ihre Datei den Code? – newguy

+0

Meinst du .dotm Dateierweiterung? – dbmitch

+0

@newguy Tut mir leid, aber ich habe deine Frage nicht verstanden. Kannst du bitte Erklären? Mein Add-In wird angezeigt, wenn Word gestartet wird. Ich kann Knopf sehen. Wenn ich klicke, wird die Nachricht überschrieben. Ich habe keinen Code für "Enabled Contents" festgelegt. Können Sie mir bitte ein Beispiel oder einen Link zu diesem Code geben? –

Antwort

1

Wenn Sie es so, wie Sie Setup sind jetzt verwenden möchten, können Sie mehrere weiterverwenden können Globale Variablen

Dim commentText As String 
Dim param2 As String 
Dim param3 As String 

commentText = "Comment inserted successfully" 
param2 = "This is parameter 2" 
param3 = "This is parameter 3" 
simpleButton = MenuItem.Controls.Add(msoControlButton, , , , True) 
With simpleButton 
    .Caption = "Show Message" 
    .Visible = True 
    .OnAction = "addComments()" 
End With 

Sub addComments() 
    commentText = Application.CommandBars.ActionControl.Parameter 
    ActiveWindow.View.Type = wdPageView 
    Selection.Comments.Add Range:=Selection.Range 
    If (Len(Selection) > 0) Then 
     MsgBox ("inside comment") 
     With Selection 
      .TypeText (commentText) 
     End With 
    End If 
    Msgbox "Param 2: " & param2 
    Msgbox "Param 3: " & param3 
End Sub 
+0

Ya, ich könnte das auch benutzen. Vielen Dank. –

0

Haben Sie versucht:

  1. die Registerkarte Datei klicken, Optionen, klicken Sie auf Vertrauensstellungscenter und dann auf Trust Center-Einstellungen klicken.

  2. Klicken Sie auf Makroeinstellungen.

  3. Klicken Sie unter Makroeinstellungen auf Alle Makros aktivieren.

Können Sie C:\Users\abc\AppData\Roaming\Microsoft\Word\STARTUP auf vertrauenswürdige Speicherorte hinzufügen?

+0

Ich habe das getan und die Anwendung neu gestartet. Es funktioniert immer noch nicht –

+0

Können Sie 'C: \ Benutzer \ abc \ AppData \ Roaming \ Microsoft \ Word \ STARTUP' zu vertrauenswürdigen Speicherorten hinzufügen? – dbmitch

+0

Ja. Der Pfad befindet sich bereits in meiner Liste der vertrauenswürdigen Speicherorte. –

0

Es ist gelöst. Ich ändere einfach die Art und Weise, Parameter der Funktion beim Klicken auf die Schaltfläche zu übergeben. Ich weiß nicht, warum es keinen Fehler erzeugte, aber es wurde nur mit einer Änderung gemacht.

Hier arbeitet Code: (Ich weiß noch nicht, wie mehrere Parameter übergeben)

Dim commentText As String 
     commentText = "Comment inserted successfully" 
     simpleButton = MenuItem.Controls.Add(msoControlButton, , , , True) 
     With simpleButton 
      .Caption = "Show Message" 
      .Visible = True 
      .OnAction = "addComments()" 
      .Parameter = commentText 
     End With 

Sub addComments() 
    Dim commentText As String 
    commentText = Application.CommandBars.ActionControl.Parameter 
    ActiveWindow.View.Type = wdPageView 
    Selection.Comments.Add Range:=Selection.Range 
    If (Len(Selection) > 0) Then 
     MsgBox ("inside comment") 
     With Selection 
      .TypeText (commentText) 
     End With 
    End If 
End Sub 
+0

Das sieht nicht so aus, als müssten Sie sogar .Parameter - commentText wird gerade in addComments von Ihrer globalen Modulvariablen abgerufen. – dbmitch

Verwandte Themen