well at the moment you're looping through the controls. Every label you come to you loop through a control array - overwriting a particular set of variables - which probably isn't what you intended to do.

With this code you want to be thinking about how you're going to be loading this information - how are you going to know what properties to assign to which controls etc.

Since all the controls (bar-one) that you want to save are in control arrays - it might make sense to loop through those control arrays one by one. In the example below I've chosen to record the name (and index) of the control at the top and then properties underneath (the reason for this was because of the loading code):
VB Code:
  1. Private Sub cmdSaveFile_Click()
  2.     Dim oCtl As Control
  3.     '
  4.     '
  5.     Open m_strFileNameLocation For Output As #m_intFF
  6.    
  7.         ' lblText Control Array
  8.         For Each oCtl In lblText
  9.             If oCtl.Index Then
  10.                 With oCtl
  11.                     Print #m_intFF, "###"
  12.                     Print #m_intFF, .Name & "|" & .Index
  13.                     Print #m_intFF, "BorderStyle", .BorderStyle
  14.                     Print #m_intFF, "Top", .Top
  15.                     '
  16.                     '
  17.                 End With
  18.             End If
  19.         Next oCtl
  20.        
  21.         ' pbShape Control Array
  22.         For Each oCtl In pbShape
  23.             If oCtl.Index Then
  24.                 With oCtl
  25.                     '
  26.                     '
  27.         '
  28.         '
  29.     Close #m_intFF
  30. End Sub
Now to load those control properties I'm going to use the CallByName function which allows me to Get/Let/Set properties by knowing their names as a string:
VB Code:
  1. Private Sub cmdLoadFile_Click()
  2.     Dim oCtl As Control
  3.     Dim sParts() As String, sLine As String
  4.     Dim bNewCtl As Boolean
  5.    
  6.     Open m_strFileNameLocation For Input As #m_intFF
  7.         Do Until EOF(m_intFF)
  8.             Line Input #m_intFF, sLine
  9.            
  10.             Select Case True
  11.                 Case bNewCtl
  12.                     sParts = Split(sLine, "|")
  13.                     If UBound(sParts) Then
  14.                         Set oCtl = Me.Controls(sParts(0))(Val(sParts(1)))
  15.                         Load oCtl
  16.                     Else
  17.                         Set oCtl = Me.Controls(sParts(0))
  18.                     End If
  19.                     bNewCtl = False
  20.                 Case sLine = "###"
  21.                     oCtl.Visible = True
  22.                     Set oCtl = Nothing
  23.                     bNewCtl = True
  24.                 Case Len(sLine)
  25.                     sParts = Split(sLine, "|")
  26.                     CallByName oCtl, sParts(0), VbLet, sParts(1)
  27.             End Select
  28.         Loop
  29.     Close #m_intFF
  30. End Sub
Now there are many ways to approach this - so you may get other (better) suggestions - the code above is just something to think about - feel free to ask any questions.

Also none of that code has been tested - it should work, but there may be silly errors in it.