The objects, methods, and properties in Microsoft Internet Explorer are usually designed for run-time use. In Microsoft FrontPage, most of the elements are designed for design-time only. You can programmatically add content to an existing document, access selections on a page, create a scripting element, or modify an existing table. Click one of the following links to move directly to that subject.
Adding Content to a Document Using a TextRange
Accessing User Selections Using a TextRange
Adding Content to a Document Using a TextRange
You can programmatically add HTML content to a web page by creating a text range object and adding the new content to the page as shown in the following example. The text range object is created from the myDocument body object. If the value in myClearPage is true, then the entire content between the <Body></Body> tags is replaced with the new HTML content, otherwise the new content is appended to the original content.
Public Function AddHTMLToPage(myDocument As Object, _
myHTMLText As String, myClearPage As Boolean) As Boolean
Dim myRange As Object
Dim myBodyText As Object
On Error GoTo CannotAddHTML
'Create a TextRange object
If myClearPage Then
Set myRange = _
myDocument.all.tags("BODY").Item(0).createTextRange
'Clear the current document
Call myRange.pasteHTML("")
myRange.collapse False
Set myRange = Nothing
End If
Set myBodyText = myDocument.all.tags("BODY").Item(0)
myBodyText.innerHTML = myBodyText.innerHTML & myHTMLText & vbCrLf
AddHTMLToPage = True
Exit Function
CannotAddHTML:
AddHTMLToPage = False
End Function
Sub AddNewHTML()
Dim myHTMLString as String
Dim myBodyElement As Object
myHTMLString = "<B> <I> New Sale on Vintage Wines! </I> </B>" & vbCr
If AddHTMLToPage(ActivePageWindow.Document, myHTMLString, True) Then
Set myBodyElement = _
ActivePageWindow.Document.all.tags("BODY").Item(0)
End If
End Sub
Accessing User Selections Using a TextRange
You can use the IHTMLTxtRange object to select HTML objects or manipulate a user selection on a specified document. The following example applies a background color to the current selection.
Private Sub ApplyStyleToSelection()
Dim myRange As IHTMLTxtRange
Set myRange = ActiveDocument.selection.createRange
myRange.parentElement.style.backgroundColor = "SkyBlue"
End Sub
Scripting in Visual Basic for FrontPage 2000 is easy. Just load the script into a string variable and append the string to the <Head> tag for the page. (The <Head> tag is accessed using an IHTMLElement object). Once the string has been added to the page, it is a valid scripting element and can be accessed through the FPHTMLScriptElement object and modified. The following code adds a script element to the current page, verifies that the script was added, adds a query to the user with OK and Cancel buttons, and then prints some of the script element properties to the Immediate window in the Visual Basic Editor.
Private Sub CreateAScript()
Dim myScriptElement As FPHTMLScriptElement
Dim myHTag As IHTMLElement
Dim myBodyTag As IHTMLElement
Dim myBodyString As String
Dim myHTMLString As String
Dim myText As String
'Build a script tag construct.
myHTMLString = myHTMLString & "<script language=""VBScript"">" _
& vbCrLf
myHTMLString = myHTMLString & "Function doOK" & vbCrLf
myHTMLString = myHTMLString & _
"msgbox ""Please wait, an order form is being generated...""" & _
vbCrLf
myHTMLString = myHTMLString & "End Function" & vbCrLf & vbCrLf
myHTMLString = myHTMLString & "Function doCancel" & vbCrLf
myHTMLString = myHTMLString & _
"msgbox ""Exiting ordering process.""" & vbCrLf
myHTMLString = myHTMLString & "End Function" & vbCrLf
myHTMLString = myHTMLString & "</script>" & vbCrLf
'Build a call tag construct.
myBodyString = "<CENTER>" & vbCrLf
myBodyString = myBodyString & _
"<BUTTON onclick=""doOK()"">OK</BUTTON>" & vbTab
myBodyString = myBodyString & _
"<BUTTON onclick=""doCancel()"">Cancel</BUTTON>" & vbCrLf
myBodyString = myBodyString & "</CENTER>"
'Add text to the document
myText = "I'd like to order some vintage wines."
'Access the <HEAD> tag.
Set myHTag = ActivePageWindow.Document.all.tags("HEAD").Item(0)
'Append the script element to the <Head> tag(myHTag).
myHTag.innerHTML = myHTag.innerHTML & myHTMLString
'Verify that the script element was added.
If ActivePageWindow.Document.scripts.length = 1 Then
'Access the script element just added.
Set myScriptElement = ActivePageWindow.Document.scripts(0)
'Print script element properties to the Immediate window.
'JScript only: the next statement gets the FOR= attribute from
'the JScript, otherwise an empty string prints in the Immediate
'window.
Debug.Print myScriptElement.htmlFor
'Retrieve the content of the script.
Debug.Print myScriptElement.outerHTML
'Check scripting language.
Debug.Print myScriptElement.language
End If
'Add a query to the user and call the script element.
ActiveDocument.body.insertAdjacentHTML "BeforeEnd", _
"<B><I>" & myText & "</B></I><P>" & myBodyString
End Sub
Anyone who has created tables and worked with their contents in HTML will find it easy to use Visual Basic to access tables. The following program accesses a table on the current page and inserts a cell into the table.
Sub AccessTables()
Dim myTable As FPHTMLTable
Dim myRow As FPHTMLTableRow
Dim myCell As FPHTMLTableCell
'Get the table.
Set myTable = ActiveDocument.all.tags("TABLE").Item(0)
'Get the first row.
Set myRow = myTable.rows(0)
MsgBox myRow.cells.Length
'Get the first cell.
Set myCell = myRow.cells(0)
MsgBox myCell.Width
'Add a new cell to the first row.
Set myCell = myTable.rows(0).insertCell(myRow.cells.Length)
End Sub