Thanks GMayor. Great example. In the meantime, I've been working on this and came up with the following code:
Code:
'---------------------------------------------------------------------------------------
' Procedure : replace_quotes_with_smart_quotes
' Author : RMittelman@gmail.com
'
' Purpose : Replaces plain apostrophes & quotes with Word smart quotes
'
' History : 11/14/2021 Initial version
' 11/20/2021 Replaced Regex code with Word Find code
'
' Returns : Boolean indicating success or failure.
'
' Notes :
'
'---------------------------------------------------------------------------------------
'
Private Function replace_quotes_with_smart_quotes() As Boolean
Dim myStoryRange As Object
Dim arFind As Variant
Dim arReplace As Variant
Dim i As Integer
replace_quotes_with_smart_quotes = False
On Error GoTo error_handler
arFind = Array(" '", "'", " """, """")
arReplace = Array(Chr$(145), Chr$(146), Chr$(147), Chr$(148))
For Each myStoryRange In WordDoc.StoryRanges
With myStoryRange.Find
.Forward = True
.Wrap = wdFindContinue
.Format = False
.ClearFormatting
For i = 0 To UBound(arFind)
.Text = arFind(i)
.Replacement.Text = arReplace(i)
.Replacement.ClearFormatting
.Replacement.Highlight = False
.Execute Replace:=wdReplaceAll
Next
End With
Next myStoryRange
replace_quotes_with_smart_quotes = True
exit_handler:
On Error Resume Next
Set myStoryRange = Nothing
Exit Function
error_handler:
m_LastError = Err.Description
If MsgBoxEx(Err.Description, vbRetryCancel + vbExclamation + vbDefaultButton2, "Error " & Err.Number, , , vbRed, , "&Debug", "&Exit") = vbRetry Then
Stop
Resume
End If
replace_quotes_with_smart_quotes = False
Resume exit_handler
End Function
Somewhat similar to what you did. Not familiar enough with story ranges to understand what you did, or why some of the types require you to do the replacing again.
Looping through the story ranges in a for each loop seems to work, but now I'm concerned that it may fail under certain circumstances.
I'd appreciate knowing what's going on in your code, because I'm using my technique to replace other things in the document also.
Access rich text is totally confusing to Word, so I can't simply place my rich text paragraphs from access storage into a Word document. So I'm using plain text with codes like "<e>", "<se>" & "<ce>" in my paragraph text and then popping them into the Word document and replacing them with {Enter}, {Shift-Enter} & {Ctrl-Enter} Word codes. This seems to work, but now I'm concerned that I'm not using story types and text frames and such.
Thanks again...