Microsoft Office Forums

Go Back   Microsoft Office Forums > >

Reply
 
Thread Tools Display Modes
  #1  
Old 11-19-2021, 09:17 AM
PhilTilson PhilTilson is offline Opening Userform from button or menu Windows 10 Opening Userform from button or menu Office 2016
Novice
Opening Userform from button or menu
 
Join Date: Nov 2021
Posts: 4
PhilTilson is on a distinguished road
Default Opening Userform from button or menu

I have a simple requirement.

The user types up a document and, when complete, clicks a menu item or toolbar button which brings up a VBA userform. The user answers a few questions on the form, clicks submit and the VBA then prints the document to a PDF file with a name constructed from the userform answers.

I have created the userform and tested it, and everything works fine. I am pretty sure I can achieve the print-to-PDF function without problem. What I cannot do is find out how to open the userform from within the document!



I have gone round and round in circles playing with macros, templates etc, but I just want a simple explanation of how I can 1) put a button on a toolbar (or create a menu item) and 2) have that button or menu open the userform for the author.

Please help!
Reply With Quote
  #2  
Old 11-19-2021, 09:56 PM
gmayor's Avatar
gmayor gmayor is offline Opening Userform from button or menu Windows 10 Opening Userform from button or menu Office 2019
Expert
 
Join Date: Aug 2014
Posts: 4,101
gmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud of
Default

Either see Customize the Office Ribbon (It doesn't take rocket science)

or even simpler, create a macro to show your userform in the document template and run that macro when a new document is created from the template. The macro enabled template would have the userform, the macro(s) the document text and (preferably) content controls placed to accept the data from the userform. Create a new document from the template.

The following macros should be saved in the template. Change the name of the form as appropriate. You can call the macro to fill the content control(s) as often as required from your userform code and the PDF macro to finish.
Code:
Option Explicit

Sub AutoNew()
    ShowMyForm
End Sub

Sub ShowMyForm()
    frmFormName.Show
End Sub

Private Sub FillCC(strCCTitle As String, strValue As String, Optional bLock As Boolean)
'Graham Mayor - https://www.gmayor.com - Last updated - 03 Sep 2021
Dim oCC As ContentControl
    On Error GoTo lbl_Exit
    For Each oCC In ActiveDocument.ContentControls
        If oCC.Title = strCCTitle Then
            oCC.LockContents = False
            oCC.Range.Text = strValue
            oCC.LockContentControl = True
            If bLock = True Then oCC.LockContents = True
            Exit For
        End If
    Next oCC
lbl_Exit:
    Set oCC = Nothing
    Exit Sub
End Sub

Private Sub SaveAsPDF()
Dim strDocName As String
Dim strPath As String
Dim intPos As Integer
Start:
    On Error Resume Next
    ActiveDocument.Save
    If ActiveDocument.path = "" Then
        MsgBox "Document must be saved first!", vbCritical, "Save Document"
        GoTo Start
    End If
    On Error GoTo 0
    strDocName = ActiveDocument.Name
    strPath = ActiveDocument.path & "\"
    intPos = InStrRev(strDocName, ".")
    If intPos = 0 Then
        ActiveDocument.Save
        GoTo Start
    End If
    strDocName = Left(strDocName, intPos - 1)
    strDocName = strPath & strDocName & ".pdf"

    ActiveDocument.ExportAsFixedFormat OutputFileName:=strDocName, _
                                       ExportFormat:=wdExportFormatPDF, _
                                       OpenAfterExport:=False, _
                                       OptimizeFor:=wdExportOptimizeForPrint, _
                                       Range:=wdExportAllDocument, From:=1, to:=1, _
                                       Item:=wdExportDocumentContent, _
                                       IncludeDocProps:=True, _
                                       KeepIRM:=True, _
                                       CreateBookmarks:=wdExportCreateHeadingBookmarks, _
                                       DocStructureTags:=True, _
                                       BitmapMissingFonts:=True, _
                                       UseISO19005_1:=False
lbl_Exit:
    Exit Sub
End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019)
Visit my web site for more programming tips and ready made processes www.gmayor.com
Reply With Quote
  #3  
Old 11-20-2021, 03:45 AM
PhilTilson PhilTilson is offline Opening Userform from button or menu Windows 10 Opening Userform from button or menu Office 2016
Novice
Opening Userform from button or menu
 
Join Date: Nov 2021
Posts: 4
PhilTilson is on a distinguished road
Default

Thanks for your helpful reply, Graham.

I will study this in more detail this morning, but the main thing that strikes me is that you (and many other references I have looked at!) are suggesting running the macro on opening the document. This is the problem...

The user will first create a new document, such as the agenda for a meeting and, when it is complete, then run the macro to bring up the user form. This form has some simple questions about the type of document, the body for which it has been written and the date of the document. From these replies it constructs the rather abstruse document name that the filing system requires for archiving - eg:

VHT Mtg 04 Agenda 17 Apr 2021.pdf

The filing system was not my idea! But, as you can see, there is plenty of opportunity to mess up the name structure, especially by a not-very-computer-literate operator, which is why I devised the form.

So how can I prevent the macro from running immediately, but delay it until the user has written the document and wants to file it?
Reply With Quote
  #4  
Old 11-20-2021, 10:01 PM
gmayor's Avatar
gmayor gmayor is offline Opening Userform from button or menu Windows 10 Opening Userform from button or menu Office 2019
Expert
 
Join Date: Aug 2014
Posts: 4,101
gmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud of
Default

In that case you would have to create the ribbon button and ensure that your not very computer literate operator uses it.
Personally I would use the userform to create the document with all the variables available from the userform and changeable texts inserted using building blocks if they are too large for convenient insertion from code.
__________________
Graham Mayor - MS MVP (Word) (2002-2019)
Visit my web site for more programming tips and ready made processes www.gmayor.com
Reply With Quote
Reply

Tags
menu bar, user forms, vba code

Thread Tools
Display Modes


Similar Threads
Thread Thread Starter Forum Replies Last Post
Userform button: the object invoked has disconnected from its clients letcall Word VBA 2 08-25-2021 07:58 AM
.DOTM files not opening as .DOCX with userform mktate Word VBA 3 02-26-2016 02:17 PM
Create a command button that will insert another drop down menu Tinamation Word VBA 1 11-06-2015 03:11 PM
Executing a userform with a command button spc94 Word VBA 2 06-24-2015 10:08 PM
VBA Code in a UserForm module to delete a Command Button which opens the userform Simoninparis Word VBA 2 09-21-2014 03:50 AM

Other Forums: Access Forums

All times are GMT -7. The time now is 12:00 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Search Engine Optimisation provided by DragonByte SEO (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
MSOfficeForums.com is not affiliated with Microsoft