В моем проекте VBA я создал собственный класс с различными параметрами внутри класса.Один из параметров имеет тип «Коллекция», а другой имеет тип clsnode (пользовательский объект класса), и они в основном хранят все узлы / корневые узлы древовидного представления.Теперь, установив все параметры, я хотел бы сохранить все эти параметры, чтобы при повторном открытии книги она читалась и загружалась.
Я попытался создать объект Type и попытался сохранить его какbin-файл, но затем я столкнулся с этой ошибкой компиляции: «Невозможно получить или поместить переменную ссылки на объект или переменную определенного пользователем типа, содержащую ссылку на объект» *
Ниже приведен код, который я пишу в модуле:
Type TreeData
ActiveNode As clsNode
AppName As String
Changed As Boolean
CheckBoxes As Boolean
EnableLabelEdit As Boolean
FullWidth As Boolean
Indentation As Single
LabelEdit As Long
LineColor As Long
MoveCopyNode As clsNode
NodeHeight As Single
Nodes As New Collection
RootButton As Boolean
RootNodes As New Collection
ShowExpanders As Boolean
End Type
Function readRoot() As TreeData
Dim fileName As String, fileNo As Integer, takeRoot As TreeData
fileName = "C:\Users\xxx\Documents\test.bin"
fileNo = FreeFile
Open fileName For Binary Lock Read As #fileNo
Get #fileNo, , takeRoot
'Recovered the TreeData to testVar
readRoot = takeRoot
Close #fileNo
End Function
Sub SaveRoot(ActiveNode As clsNode, AppName As String, Changed As Boolean, CheckBoxes As Boolean, EnableLabelEdit As Boolean, FullWidth As Boolean, Indentation As Single, LabelEdit As Long, LineColor As Long, MoveCopyNode As clsNode, NodeHeight As Single, RootButton As Boolean, ShowExpanders As Boolean, Nodes As Collection, RootNodes As Collection)
Dim fileName As String, fileNo As Integer, storeRoot As TreeData
storeRoot.ActiveNode = ActiveNode
storeRoot.AppName = AppName
storeRoot.Changed = Changed
storeRoot.CheckBoxes = CheckBoxes
storeRoot.EnableLabelEdit = EnableLabelEdit
storeRoot.FullWidth = FullWidth
storeRoot.Indentation = Indentation
storeRoot.LabelEdit = LabelEdit
storeRoot.LineColor = LineColor
storeRoot.MoveCopyNode = MoveCopyNode
storeRoot.NodeHeight = NodeHeight
Set storeRoot.Nodes = Nodes
storeRoot.RootButton = RootButton
Set storeRoot.RootNodes = RootNodes
storeRoot.ShowExpanders = ShowExpanders
'Now save all testVar variables to a binary file
fileName = "C:\Users\xxx\Documents\test.bin"
fileNo = FreeFile
Open fileName For Binary Lock Read Write As #fileNo
Put #fileNo, , storeRoot
Close #fileNo
End Sub