Is there a macro out there that when activated, will do the following?
1.) Create a new TXT file.
2.) List the name of all fonts used in the document
3.) Save the TXT file using the same name as what the current document is named to a specified directory.
4.) Close the TXT file.
Is there an existing macro that can do this or would this be a difficult thing to accomplish?
You might already be aware of this, but I add this here as general information: One can go to File>Document Info, use checkboxes to set what information is shown, and then save that information to a text file. "Text statistics" includes a list of fonts used in the document.
For a macro such as the one you describe, someone has already written some code that creates a font list. For output, that macro produces an Artistic Text object.
See this thread on the Oberon Place forum. The code is from Alex Vakulenko, fixed by Shelby Moore.
For future reference, in case that ever disappears:
Dim p As Page
Dim s As Shape
Dim col As New Collection
Dim sFontList As String
Dim vFont As Variant
For Each p In ActiveDocument.Pages
For Each s In p.FindShapes(, cdrTextShape)
FindFontsInRange s.Text.Frame.Range, col
sFontList = ""
For Each vFont In col
If sFontList <> "" Then sFontList = sFontList & vbCrLf
sFontList = sFontList & vFont
ActiveDocument.Pages(1).ActiveLayer.CreateParagraphText 0, 0, 3, 8, sFontList, Font:="Arial", Size:=10
Private Sub FindFontsInRange(ByVal tr As TextRange, ByVal col As Collection)
Dim FontName As String
Dim trBefore As TextRange, trAfter As TextRange
FontName = tr.Font
If FontName = "" Then
' There are more than one font in the range
' Divide the range in two and look into each half separately
' to see if any of them has the same font. Repeat recursively
Set trBefore = tr.Duplicate
trBefore.End = (trBefore.Start + trBefore.End) \ 2
Set trAfter = tr.Duplicate
trAfter.Start = trBefore.End
FindFontsInRange trBefore, col
FindFontsInRange trAfter, col
AddFontToCollection FontName, col
Private Sub AddFontToCollection(ByVal FontName As String, ByVal col As Collection)
Dim v As Variant
Dim bFound As Boolean
bFound = False
For Each v In col
If v = FontName Then
bFound = True
If Not bFound Then col.Add FontName
I am aware of the File>Document Info and checking the box, but we don't want to add all those steps in order to do that for each file we create.
We are lazy =)
I read the thread in the link you posted and Alex says the following
"Here is a piece of code which will look into each text object, even if the same text object has several different fonts in it and build the list of all fonts used in the document. It then creates a paragraph text object and puts the font list in it. You can change the macro to dump it into a text file or show it in a text box on a dialog, so it can be copied and pasted."
So, how can I change the macro to dump it to a text file as he says? This would be exactly what we need it to do.
We use both X4 and 2017...would this be able to be used in both versions?
Thank you SO much for your help.
Jason Moore said:
Sorry, but.. . you say you're lazy but you want to use so complicated piece of software, made and corrected by several programmers, for something that's already present on the program since the past century, and you can simply assign a shortcut such as Ctrl+1 for do it?
I'm sorry, but the built in function doesn't work the way that we needed it to. It doesn't automatically generate the file name of the TXT file based on the current files name.
I didn't mean to offend you.
Eskimo helped out tremendously and made the macro work perfectly for us!
His skills are highly respected and appreciated by us.
Ariel said:Sorry, but.. . you say you're lazy but you want to use so complicated piece of software, made and corrected by several programmers, for something that's already present on the program since the past century, and you can simply assign a shortcut such as Ctrl+1 for do it?
In X5 and newer versions of CorelDRAW, I am having trouble finding the tool for saving a text file from "Document Information".
Would you please help? Perhaps I am looking in the wrong place in CorelDRAW.