#1
|
|||
|
|||
Prompt a macro to run when opening a specific file type
Hello I am attempting to create a macro and add it to the normal.dotm so when I open any file that contains "contract" in the name and is an RTF file type it will prompt to run a macro and automatically find and replace specific text. I have created the macro that finds and replaces the text. However i cannot get the file to prompt automatically upon opening. I also think i don't have the proper syntax to only run the file if it is an RTF file which contains the name contract. I have tried changing Document_Open() to AutoOpen, AutoExec but it still does not work. I enabled all macros in security settings as well. I am still relatively new to writing macros. Any help would be appreciated. Code:
Private Sub Document_Open() Call foodandbeveragemacro End Sub Sub foodandbeveragemacro() If Not Activedocument.Name "*contract*.rtf" Then Exit Sub Dim run As Variant run = MsgBox("Do you wish to remove gratuity detail from F&B clause. Canadian Properties only.", vbYesNo, "Canadian F&B Clause Change") If run = vbYes Then "remaining code left out as it runs fine" Last edited by macropod; 11-30-2013 at 02:46 PM. Reason: Added code tags |
#2
|
||||
|
||||
Try something along the lines of:
Code:
Private Sub Document_Open() With ActiveDocument If .SaveFormat = wdFormatRTF Then If InStr(.Name, "Contract", vbTextCompare) > 0 Then Call FoodAndBeverageMacro(ActiveDocument) End If End If End With End Sub Sub FoodAndBeverageMacro(Doc As Document) Dim Rslt Rslt = MsgBox("Do you wish to remove gratuity detail from F&B clause" & vbCr & _ "(Canadian Properties only)?", vbYesNo, "Canadian F&B Clause Change") If Rslt = vbYes Then With Doc.Content.Find 'Find/Replace code goes here End With End If End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
|||
|
|||
Thanks for your reply I was able to figure out a different way to get it to work. I created a new string variable called Docname and made it equal the active workbook.name and was then able to use the if docname like "*Contract*.RTF" to call the find and replace macro. Thanks for your input.
|
#4
|
||||
|
||||
Unless there's more to what you're doing than you've posted, I can't see where 'the active workbook.name' has any bearing - all you'd mentioned so far is documents, not workbooks.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#5
|
|||
|
|||
Code
Below is the code I used I probably didn't explain it very well in my previous post. Included what I did to get the macro to autorun when the filename contains a specific string.
Code:
Private Sub Document_Open() Call Filename End Sub Sub Filename() Dim Docname As String Docname = ActiveDocument.Name If Docname Like "*Contract*" Then Call contractchange End If If Docname Like "*contract*" Then Call contractchange End If End Sub Sub contractchange() Dim run As Variant run = MsgBox("do you want to make changes',vbYesNo) If run = vbNo Then Exit Sub If run = vbYes Then "remaining code goes here) Last edited by macropod; 11-30-2013 at 02:48 PM. Reason: Added code tags |
#6
|
||||
|
||||
OK, but your new code doesn't test the document format, (i.e. RTF), which you previously specified as a requirement.
As a side note, your two 'Docname Like' tests could be reduced to: Code:
If Docname Like "*[Cc]ontract*" Then Call contractchange
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
Tags |
macros don't work, macros in word, vba word |
Thread Tools | |
Display Modes | |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Word file type in 2007 | casaserves | Word | 4 | 08-03-2013 01:11 AM |
can I run a macro when I open a specific doc ?? | ximpostor | Word VBA | 10 | 10-12-2012 12:35 PM |
Need VBA For Macro On How To Remove Specific Words | netchie | Word VBA | 6 | 08-28-2012 03:37 PM |
can I run a macro when I open a specific doc. | shreked | Word | 8 | 01-12-2012 03:36 AM |
Getting COMException Incompatible file type and file extension | sbalerao | Mail Merge | 0 | 04-21-2011 10:30 AM |