Сохранение объекта класса или коллекции или общего объекта, а затем загрузка его снова - PullRequest
0 голосов
/ 03 мая 2019

В моем проекте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...