![]() |
|
#1
|
|||
|
|||
|
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
|
|||
|
|||
|
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 |