#1
|
|||
|
|||
AutoOpen to Update TextBox Value
I have a Word 2016 document that upon opening, I want an ActiveX Text Box to update with a random quote. When I run the code via Debug, it works perfectly 100% of the time, however when I open the document, it seems to always display the same quote (i.e. Quote 11) and I can't seem to figure out where I've gone wrong? This is my code within a standard Module:
Code:
Sub AutoOpen() Dim MyDocName As String Dim strQuotes(15) As String Dim lngIndex As Long MyDocName = Application.ActiveDocument.Name strQuotes(0) = "'Quote 1'" strQuotes(1) = "'Quote 2'" strQuotes(2) = "'Quote 3'" strQuotes(3) = "'Quote 4'" strQuotes(4) = "'Quote 5'" strQuotes(5) = "'Quote 6'" strQuotes(6) = "'Quote 7'" strQuotes(7) = "'Quote 8'" strQuotes(8) = "'Quote 9'" strQuotes(9) = "'Quote 10'" strQuotes(10) = "'Quote 11'" strQuotes(11) = "'Quote 12'" strQuotes(12) = "'Quote 13'" strQuotes(13) = "'Quote 14'" strQuotes(14) = "'Quote 15'" strQuotes(15) = "'Quote 16'" lngIndex = Int((15 - 0 + 1) * Rnd + 0) Documents(MyDocName).tbRandomQuote.Value = strQuotes(lngIndex) End Sub I'm sure it'll be so simple, but I've pulled my hair out going around in circles. Thanks so much for any assistance / guidance you could offer. Corin. |
#2
|
||||
|
||||
The randomiser works for me but I changed it slightly to test.
Code:
lngIndex = Int((16) * Rnd) MsgBox lngIndex & vbCr & strQuotes(lngIndex) Could your issue be due to the timing of the AutoOpen macro actually running prior to the opening document becoming the 'ActiveDocument'?
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#3
|
||||
|
||||
If you want the code to work when you create a new document, it should be in the template and be called AutoNew and not AutoOpen. If you want it to run when you open the document the code should be in the document (unless you are certain that the document will always be able to access the template) and the document saved as macro enabled.
Frankly I wouldn't use an active X text box for this. Better to use a docvariable, a content control or a bookmark. The following provides all the suggested options Code:
Sub AutoOpen() Dim MyDoc As Document Dim strQuotes(15) As String Dim lngIndex As Long Dim oRng As Range Set MyDoc = Application.ActiveDocument strQuotes(0) = "'Quote 1'" strQuotes(1) = "'Quote 2'" strQuotes(2) = "'Quote 3'" strQuotes(3) = "'Quote 4'" strQuotes(4) = "'Quote 5'" strQuotes(5) = "'Quote 6'" strQuotes(6) = "'Quote 7'" strQuotes(7) = "'Quote 8'" strQuotes(8) = "'Quote 9'" strQuotes(9) = "'Quote 10'" strQuotes(10) = "'Quote 11'" strQuotes(11) = "'Quote 12'" strQuotes(12) = "'Quote 13'" strQuotes(13) = "'Quote 14'" strQuotes(14) = "'Quote 15'" strQuotes(15) = "'Quote 16'" lngIndex = Int((16) * Rnd) 'MyDoc.tbRandomQuote.Text = strQuotes(lngIndex) 'Activex text box 'MyDoc.SelectContentControlsByTitle("tbRandomQuote").Item(1).Range.Text = strQuotes(lngIndex) 'content control 'MyDoc.Variables("tbRandomQuote").Value = strQuotes(lngIndex) 'docvariable - reproduce with docvariable field 'MyDoc.Fields.Update 'update the docvariable field FillBM "tbRandomQuote", strQuotes(lngIndex) End Sub Private Sub FillBM(strBMName As String, strValue As String) 'Graham Mayor Dim oRng As Range With ActiveDocument On Error GoTo lbl_Exit Set oRng = .Bookmarks(strBMName).Range oRng.Text = strValue oRng.Bookmarks.Add strBMName End With lbl_Exit: Set oRng = Nothing 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 |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Auto-update field codes in Outlook Template - AutoOpen Macro not working | victoriasun | Outlook | 5 | 12-22-2015 01:54 AM |
Update a summary chart when I update a dashboard with dates | cangelis | Excel | 6 | 09-24-2014 08:08 AM |
Display result in textbox based on the input of another textbox | scarymovie | Word VBA | 5 | 05-16-2012 07:05 PM |
Textbox Template | t0m46 | Word | 0 | 09-07-2010 03:38 AM |
Making a Macro "autoopen" | Joshocom | Word | 1 | 03-16-2010 05:03 PM |