Well, I may be making progress.... Wanted to post the direction I'm
heading now just to see if anyone has any comments, and hopefully someone
will find this useful.
Can't find anything that is going to be able to read native Viso .vsd
files.
But, Visio can save the files as "XML Drawing" with a .vdx extension.
Being XML, it shouldn't take too much work from that point to get swish to
index it. Haven't looked at the XML filters and such yet, but should just
be a matter of pulling out the tags we want.
In visio .vdx files, its this:
<DocumentProperties>
<Title>swish5</Title>
<Subject>test sub</Subject>
<Creator>MFountain</Creator>
<Keywords>test key</Keywords>
<Desc>test desc</Desc>
<Manager>test man</Manager>
<Company>Worldspan</Company>
<Category>test cat</Category>
... other tags
</DocumentProperties>
... bunch of other tags. but, only one I'm interested in is
<Text>...</Text>
Next problem - converting existing .vsd files into .vdx files. Found
someone that must have been doing something similar, and has a vb script
that can run to do this. Only requirement is that you have to have visio
first in order to convert these files. I had about 50 files to conver in
about 10-15 directories. A minor pain, but now we just have to save all
new visio files as .vdx instead of .vds. One other note about this method
- the .vdx files are anywhere from 3 to 5 times larger than the original
vsd files. So, if you produce huge multi-MB files, you may want to
consider this. Think our largest file went from about 1.5 MB to about 6 MB
To get this to run, open a drawing in visio (any drawing will work) and do
"tools / macros / visual basic editor". In that new window, select
"insert / module"
In that editor window, past the follwing (change the directories to be
yours of course)
Note - this worked fine for me, but its a cut&paste job, I know absolutely
nothing about vb.
'DESCRIPTION: Saves all of the VSD files in a given folder as VDX files
'Change to match the folder that contains all of the VSD files you want to
convert
Private Const SOURCEPATH As String = "C:\Documents and
Settings\mfountain\Desktop"
'Change to match the folder where you want the VDX files to be saved to.
The folder must exist.
Private Const TARGETPATH As String = "C:\Documents and
Settings\mfountain\Desktop"
Public Sub Main_()
ConvertVSDToVDX SOURCEPATH, TARGETPATH
End Sub
Private Sub ConvertVSDToVDX(sourceFolder As String, targetFolder As String)
Dim docToSave As Document
Dim sourceFile As String
On Error GoTo ConvertVSDToVDX_ErrorHandler
sourceFile = Dir$(sourceFolder & "\" & "*.vsd")
If sourceFile <> "" Then
Do
'NOTE: You might need to use Application.AlertResponse to
automatically
'respond to any dialogs that appear as a result of opening a
document
'Open the source vsd
Set docToSave = Application.Documents.OpenEx(sourceFolder & "\" &
sourceFile, visOpenRO)
'Save the document to vdx. Original file name minus extension
isused.
docToSave.SaveAs targetFolder & "\" & Left$(docToSave.Name,
Len(docToSave.Name) - 4) & ".vdx" 'assume 4 character extension
'Ensure we aren't asked to save and close the doc
docToSave.Saved = True
docToSave.Close
'Clean up the doc object
Set docToSave = Nothing
sourceFile = Dir$
Loop While (sourceFile <> "")
End If
Exit Sub
ConvertVSDToVDX_ErrorHandler:
Dim choice As Integer
choice = MsgBox("An error has occurred!" & vbCrLf & vbCrLf &
Err.Description & vbCrLf & vbCrLf & "Continue?", vbCritical + vbYesNo,
"Save As VDX Error")
If choice = vbYes Then
Resume Next
Else
Stop
End If
End Sub
Received on Sun Jan 29 07:57:40 2006