Microsoft Office Forums

Go Back   Microsoft Office Forums > >

Reply
 
Thread Tools Display Modes
  #1  
Old 11-20-2018, 01:56 PM
macropod's Avatar
macropod macropod is offline Save as txt : How to detect if Unicode encoding is required? Windows 7 64bit Save as txt : How to detect if Unicode encoding is required? Office 2010 32bit
Administrator
 
Join Date: Dec 2010
Location: Canberra, Australia
Posts: 22,467
macropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond repute
Default


VBorNotVB: When posting code, please use the code tags, indicated by the # button on the posting menu. Without them, your code loses much of whatever structure it had. See your edited post.

Looping through every character in a document is slow and unnecessary - excruciatingly so when every character is unnecessarily selected. In any event, testing whether characters fall in ASCII range 0-127 says nothing about whether they're Unicode; they might also be characters that fall in ASCII range 128-255!

Instead, try something based on:
Code:
Sub Demo()
Application.ScreenUpdating = False
Dim i As Long
With ActiveDocument
  With .Range.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "[^1-^255]"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
  End With
  i = Len(.Range.Text) - .InlineShapes.Count
  .Undo
End With
If i > 1 Then
  MsgBox "Document contains Unicode characters."
Else
  MsgBox "Document contains only ASCII characters."
End If
Application.ScreenUpdating = True
End Sub
__________________
Cheers,
Paul Edstein
[Fmr MS MVP - Word]
Reply With Quote
  #2  
Old 11-21-2018, 07:32 AM
VBorNotVB VBorNotVB is offline Save as txt : How to detect if Unicode encoding is required? Mac OS X Save as txt : How to detect if Unicode encoding is required? Office 2016 for Mac
Novice
 
Join Date: Oct 2018
Location: Southern California
Posts: 25
VBorNotVB is on a distinguished road
Default

Paul,

I created a blank document, added the paragraph "This is a test.", and ran your routine. It reported it as having Unicode characters!

I know my routine is slow, worse yet using wdDialogInsertSymbol makes it even slower!
But I believe it's the only surefire way to catch Unicode characters. Using "(normal text)" as the litmus test forces Word to do the work for us, otherwise special characters like Wingdings can slip through if their character code point falls below 255.

As for testing for ASCII characters 0-127, the first 128 characters of Unicode are ACSII, but represented in long. Thus the use of AscW() which tests for wide characters and guards against reading character code points as negative values!
Reply With Quote
  #3  
Old 11-21-2018, 03:14 PM
macropod's Avatar
macropod macropod is offline Save as txt : How to detect if Unicode encoding is required? Windows 7 64bit Save as txt : How to detect if Unicode encoding is required? Office 2010 32bit
Administrator
 
Join Date: Dec 2010
Location: Canberra, Australia
Posts: 22,467
macropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond reputemacropod has a reputation beyond repute
Default

Quote:
Originally Posted by VBorNotVB View Post
I created a blank document, added the paragraph "This is a test.", and ran your routine. It reported it as having Unicode characters!
I forgot that a paragraph break would remain in the document. The 'If i > 0 Then' should have been 'If i > 1 Then'. Fixed.

Quote:
Originally Posted by VBorNotVB View Post
I know my routine is slow, worse yet using wdDialogInsertSymbol makes it even slower!
But I believe it's the only surefire way to catch Unicode characters.
My approach clearly demonstrates that is not so.
Quote:
Originally Posted by VBorNotVB View Post
As for testing for ASCII characters 0-127, the first 128 characters of Unicode are ACSII, but represented in long.
You still seem to be missing the point that ASCII characters 128-255 are no different in that regard.
__________________
Cheers,
Paul Edstein
[Fmr MS MVP - Word]
Reply With Quote
  #4  
Old 11-22-2018, 11:38 AM
VBorNotVB VBorNotVB is offline Save as txt : How to detect if Unicode encoding is required? Mac OS X Save as txt : How to detect if Unicode encoding is required? Office 2016 for Mac
Novice
 
Join Date: Oct 2018
Location: Southern California
Posts: 25
VBorNotVB is on a distinguished road
Default

Your code works really well and it's fast too. Well done!
Reply With Quote
Reply

Tags
activedocument.saveas, encoding, txt



Similar Threads
Thread Thread Starter Forum Replies Last Post
Macro help - converting proprietary encoding to unicode, keep formatting kmawhood Word VBA 3 04-29-2016 04:06 PM
Save as txt : How to detect if Unicode encoding is required? Does 'Save as Unicode text' equal UTF-8 Chayes Excel 1 07-20-2012 03:07 AM
Save as txt : How to detect if Unicode encoding is required? Custom Dictionary & Unicode encoding? markus staubmann Word 3 03-28-2012 05:23 AM
Save as txt : How to detect if Unicode encoding is required? Save Word doc in unicode html (utf-8) rybrns Word 5 09-26-2011 02:18 PM
Save as txt : How to detect if Unicode encoding is required? Unicode Encoding Type Rose44 Excel 2 08-09-2009 09:05 PM

Other Forums: Access Forums

All times are GMT -7. The time now is 11:46 AM.


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