I came across Jimco's FrontPage Add-ins and Utilities, and got some ideas from his Remove Underline example which helped me come up with code for looping through all the pages on my site. Here is the code from that example adapted to my application.
Sub ChangeAllMenuTitles()
If ActiveWebWindow.Web Is Nothing Then
MsgBox "Please open a web before running this macro.", _
vbOKOnly + vbExclamation
Exit Sub
End If
If ActiveWeb.ActiveWebWindow.PageWindows.Count <> 0 Then
MsgBox "Please close all files before running this macro.", _
vbOKOnly + vbExclamation
Exit Sub
End If
Dim myTempFolder As WebFolder
Set myTempFolder = ActiveWeb.RootFolder
UserForm1.ListBox1.Clear
ChangeMenu myTempFolder
UserForm1.Show
MsgBox "Done changing Menu titles.", vbOKOnly + vbInformation
End Sub
Sub ChangeMenu(myWebFolder As WebFolder)
Dim myFiles As WebFiles
Dim myFile As WebFile
Set myFiles = myWebFolder.Files
For Each myFile In myFiles
If UCase(myFile.Extension) = "HTM" _
Or UCase(myFile.Extension) = "HTML" Or _
UCase(myFile.Extension) = "ASP" Then
myFile.Open
Dim myPage As PageWindow
Set myPage = ActivePageWindow
myPage.ViewMode = fpPageViewNormal
ChangeMenuTitle
UserForm1.ListBox1.AddItem ActiveDocument.Title
myPage.Close True
End If
Next myFile
Dim mySubFolder As WebFolder
For Each mySubFolder In myWebFolder.Folders
If mySubFolder.IsWeb = False Then
ChangeMenu mySubFolder
End If
Next mySubFolder
End Sub
This code is a little more reusable, but still at the copy and paste level. Now if I was doing this in C, I would pass a pointer to the function which is used to process each file. In this case where I have the call to ChangeMenuTitle in the middle of the function, I would call the function using the pointer. It probably can't be done that way in VBA.
When I was testing an earlier version of of this routine, FrontPage would bog down and hang. I had another computer, which I borrowed the memory from, to bring my system up to 64 Meg. After this the routine would run without bogging down the computer. I was thinking there must be a better way to do this. What I ended up doing was adding the line "myPage.Close True" to save and close each file after I was done with it. Now it should run with 32 Meg in the computer. The 486 was sort of useless even before the Cats chewed off the keyboard cable, so I might as well leave its memory in the Pentium.
Checking to make sure the file is html or asp is important, otherwise you will be opening up all your graphics files. The first time I ran this without that if statement, I had many PhotoDraw windows appearing.
Comments