Viewing UserForm code in Notepad

  • Thread starter Thread starter Paul Martin
  • Start date Start date
P

Paul Martin

Hi all

If I export a Form Module to my desktop and open it in Notepad, I can
see how VBA writes the properties of the UserForm such as Height, Left,
StartUpPosition, etc.

Is there any way that I can (in Notepad) also view all the properties
of all the controls on the UserForm?

Thanks in advance

Paul Martin
Melbourne, Australia
 
Those are saved in the file with the .frx extension. This file is a binary
file and hence cannot be viewed in notepad.

Alok Joshi
 
Addendum:

My intent was to see if any invalid RowSource or ControlSource values
had been set. My app has been crashing, and I suspect this may be the
reason. My thinking is that it would be easier to see this in Notepad,
than searching through the Properties Window.
 
Hi Paul,
For the UserForm properties, you can try:

Sub UserFormProperties()
Dim vbProj As Object, F%, i%
Set vbProj = ThisWorkbook.VBProject
Set Application.VBE.ActiveVBProject = vbProj
Application.Visible = 1
Windows(ThisWorkbook.Name).Activate
DoEvents
F = FreeFile
Open "c:\MyFile.txt" For Output As #F
On Error Resume Next
With ThisWorkbook.VBProject.VBComponents("UserForm1")
For i = 1 To .Properties.Count
Print #F, .Properties(i).Name & vbTab & .Properties(i).Value
Next i
End With
Close #F
Set vbProj = Nothing
Shell "c:\windows\notepad.exe c:\myfile.txt", 1
End Sub

MP
 
Re Paul,
For all controls properties, if you have the possibility of adding the
reference to TypeLibInformation (c:\windows\system32\tlbinf32.dll), adapt
the following code to your need:

Sub ControlsPropertiesList()
If UserForm1.Controls.Count = 0 Then Exit Sub
Cells.ClearContents
Dim oInfo As InterfaceInfo
Dim oMember As MemberInfo
Dim sProp$, i&, sVal$, Ctl As Control
For Each Ctl In UserForm1.Controls
i = i + 1
Set oInfo = InterfaceInfoFromObject(Ctl)
For Each oMember In oInfo.Members
On Error Resume Next
If oMember.InvokeKind = 4 Then
sProp = oMember.Name
sVal = CallByName(Ctl, sProp, VbGet)
Cells(i, 1) = oInfo.Name
Cells(i, 2) = sProp
Cells(i, 3) = sVal
i = i + 1
End If
Next oMember
Next Ctl
Cells.Columns.AutoFit
End Sub

Regards,
MP
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top