乔山办公网我们一直在努力
您的位置:乔山办公网 > office365 > excel有treeview 控件,打开提示无法装载对象

excel有treeview 控件,打开提示无法装载对象

作者:乔山办公网日期:

返回目录:office365


TreeView控件应用实例:将TreeView绑定到Biblio.mdb数据库应用示例:DataTree.vbp本章的代码示例是从应用示例DataTree.vbpwhichislistedintheSamplesdirectory中得到的。可将数据库中的数据绑定到TreeView控件。下面的示例将TreeView控件绑定到Biblio数据库,该数据库可以在VisualBasicCD中找到。该应用实例将Publishers表作为树节点的第一层。如果一个出版商对应于一个或多个书名,则这些书名将作为该出版商的子节点加入树中。图2.42与e5a48de588b67a686964616f336数据绑定的TreeVew控件下面的代码用到了如下对象:DataAccessObjectLibrary(3.5)名为“frmDataTree”的Form对象名为“tvwDB”的TreeView控件名为“cmdLoad”的CommandButton控件将Biblio.mdb数据库绑定到TreeView控件在工程中添加对数据访问对象(DAO3.0)的引用。为Database和Node对象创建模块级的变量。在FormLoad事件中,用OpenDatabase语句将Database对象变量设置为Biblio数据库。用Nodes集合的Add方法创建顶层的节点对象。在CommandButton的Click事件中,创建两个Recordset变量,并将它们设置为Publishers和Titles表。用“DoUntil”语句为表中的每个出版商创建一个Node对象。对每个出版商,在Titles记录集中检查匹配的PubID字段;为每个匹配项添加一个子节点。在工程中添加对数据访问对象(DAO3.5)的引用要将数据库绑定到TreeView控件,必须先添加对当前版本的数据访问对象(DAO)的引用。为Database对象和Node对象创建模块级的变量由于需要在一个会话中多次访问Biblio.mdb数据库,如果创建一个模块级的Database对象,保持一个打开数据库,将有助于提高效率。此后,不需要打开数据库即可访问它。在窗体的声明部分,键入如下内容:PrivatemDbBiblioAsDatabase如果希望该数据库还可被其它模块使用,可以用Public语句,并重命名该变量,以表明它是全局的,例如gDbBiblio。在创建Node对象时,在Set语句中(如下所示)使用Node类型的变量。DimTempNodeAsNodeSetTempNode=tvwDB.Nodes.Add()虽然可以在添加Node对象时创建变量,更有效的方式是声明一个模块级的Node对象变量,并用它创建所有的Node对象。在上述声明部分再键入:PrivatemNodeAsNode用OpenDatabase语句将Database对象变量设置为Biblio数据库Form对象的Load事件中可以初始化Database变量。代码如下:SetmDbBiblio=DBEngine.OpenDatabase("BIBLIO.MDB")在成功地初始化Database对象变量后,就可以在该模块的代码中的任何位置自由地访问它了。FormLoad事件:用Nodes集合的Add方法创建顶层的Node对象至此,Database对象变量已经被初始化为Biblio数据库,现在可以创建树中的第一个节点,并将打开的数据库的名称赋予它。首先必须用Node集合的Add方法创建第一个Node对象。还要使用Set语句将其赋给mNode对象变量,如下所示:SetmNode=tvwDB.Nodes.Add()'创建第一个节点。mNode.Text=mDbBiblio.Name注意,在上面的代码中,在创建Node的同时用Set语句将其赋给了mNode对象变量。由于mNode变量现在包含了新创建的Node对象,可以对该Node对象的属性进行赋值。在上述情况下,Database的名称(即Database对象的Name属性)已经被赋给了新节点的Text属性。CommandButtonClick事件:创建两个Recordset变量,并将它们分别设置为Publishers和Titles表本应用实例假定存在名为“cmdLoad”的按钮,并且当用户单击它时,置入Biblio数据库中的两个表到TreeView控件中。为此,必须首先在该按钮的Click事件中声明两个DAO对象变量。第一个变量rsPublishers用来包含Publishers表。第二个变量rsTitles用来包含Titles表。下面的代码声明了这两个变量,并用OpenRecordSet方法将表赋给变量:DimrsPublishersAsRecordsetDimrsTitlesAsRecordsetSetrsPublishers=mDbBiblio._OpenRecordset("Publishers",dbOpenDynaset)SetrsTitles=mDbBiblio._OpenRecordset("titles",dbOpenDynaset)用DoUntil语句为表中的每个出版商创建一个Node对象现在有两个打开的记录集,可以遍历每个记录集,创建Node对象,并为该对象的Text属性赋予合适的值。首先,必须遍历Publishers表,并为该表中的每个出版商创建一个Node对象。下列简化了的代码可以用一句话概括为,“逐个处理每个记录,直到记录集的末尾:创建Node变量,并将Title字段的值赋给其Text属性,移到下一记录并重复”:DoUntilrsPublishers.EOFSetmNode=tvwDB.Nodes.Add(1,tvwChild)mNode.Text=rsPublishers!NamersPublishers.MoveNextLoop注意,在上面的Add方法中用了两个参数。第一个参数(1)是我们希望添加入节点的Node的Index属性。也就是说,希望所有的出版商节点成为第一个(根)节点(在Form的Load事件中创建的)的子节点。第二个参数使用了常数(tvwChild),该常数指定新的Node将成为编号为“1”的Node的子节点。对每个出版商,在Titles记录集中检查匹配的PubID字段;为每个匹配项添加一个子节点上面的代码将Publishers表的内容作为第一层填入TreeView中。然而,我们还希望能够进入更深一层,为每个出版商节点增加子节点。每个子节点代表该出版商印刷的一本书。为了做到这一点,如果有了对新创建的出版商节点(mNode)的引用,只要遍历Titles记录集,并检查每条记录的PubID字段即可。如果该字段与Publishers记录集中的PubID字段相匹配,则该书是由当前的出版商出版的。但是,在能够为mNode添加节点之前,还必须先将mNode的Index属性赋给一个变量(intIndex),如下所示:intIndex=mNode.Index然后就可以在Add方法中使用该变量了,Add方法需要用来加入子节点的Node对象的Index属性:SetmNode=tvwDB.Nodes.Add(intIndex,tvwChild)如下简化的代码可被表述为“直到Recordset的结尾:创建子Node对象,并将Title字段的值赋给它的Text属性;移动到下一记录并重复上述操作”:DoUntilrsTitles.EOFIfrsPublishers!PubID=rsTitles!PubIDThenSetmNode=tvwDB.Nodes.Add(intIndex,tvwChild)mNode.Text=rsTitles!Title'Text属性。EndIfLoop完成代码上面的代码显示了用两个相关的表填成一个表的基本策略。全部代码如下:'必须设置对DAO3.5的引用。'在声明部分,声明模块级的对象变量:PrivatemDbBiblioAsDatabasePrivatemNodeAsNodePrivateSubForm_Load()'在Form_Load事件中,设置对象变量,'并创建TreeView控件的第一个Node对象。SetmDbBiblio=DBEngine.Workspaces(0)._OpenDatabase("BIBLIO.MDB")tvwDB.Sorted=TrueSetmNode=tvwDB.Nodes.Add()mNode.Text="Publishers"mNode.Tag=mDbBiblio.Name'设置Tag属性。mNode.Image="closed"'设置Image'属性EndSubPrivateSubcmdLoad_Click()'声明DAO对象变量,'并将记录集赋予它们。DimrsPublishersAsRecordsetDimrsTitlesAsRecordsetSetrsPublishers=mDbBiblio._OpenRecordset("Publishers",dbOpenDynaset)SetrsTitles=mDbBiblio._OpenRecordset("titles",dbOpenDynaset)'移到第一条记录。rsPublishers.MoveFirstDimintIndexAsInteger'用于索引的变量。'直到最后一条记录(EOF):添加一个Node对象,'并用Name字段作为新'Node对象的文本。DoUntilrsPublishers.EOFSetmNode=tvwDB.Nodes.Add(1,tvwChild)mNode.Text=rsPublishers!NamemNode.Tag="Publisher"'Tag标识该表。'为Key赋予唯一的IDmNode.Key=CInt(rsPublishers!PubID)&"ID"'将变量intIndex设置为新创建Node的Index属性。'用该变量将子Node对象加入当前Node。intIndex=mNode.Index'对这条记录,在Title表中查找与Titles记录集'中出现相同PubID的记录。如果找到这样的记录,'则在TreeView控件中加入Node对象,并将用所'找到记录的Title、ISBN和Author字段为新'Node对象的属性赋值。DoUntilrsTitles.EOFIfrsPublishers!PubID=rsTitles!PubIDThenSetmNode=tvwDB.Nodes._Add(intIndex,tvwChild)mNode.Text=rsTitles!Title'文本。mNode.Key=rsTitles!ISBN'唯一的ID。mNode.Tag="Authors"'表名。mNode.Image="leaf"'图象。EndIfrsTitles.MoveNext'Titles中的下一条记录。Loop'将rsTitles重新设置为Titles的第一条记录。rsTitles.MoveFirst'移动到下一条Publisher记录。rsPublishers.MoveNextLoopEndSub增加代码使用SQL语句创建较小的“Titles”记录集,可以对这个示例加以改进。下面的代码创建只包含相同PubID值的记录的记录集:SetrsTitles=mDbBiblio.OpenRecordset_("select*fromTitlesWherePubID="&_rsPublishers!PubID)然后该代码就只需对较小的记录集进行循环,因而效率比较高。修改后的代码如下:PrivateSubcmdLoad_Click()DimrsPublishersAsRecordsetDimrsTitlesAsRecordsetSetrsPublishers=mDbBiblio._OpenRecordset("Publishers",dbOpenDynaset)DimintIndexDoUntilrsPublishers.EOFSetmNode=tvwDB.Nodes.Add(1,tvwChild)mNode.Text=rsPublishers!NamemNode.Tag="Publisher"'标识表。mNode.Key=rsPublishers!PubID&"ID"mNode.Image="closed"intIndex=mNode.Index'对这条记录,使用查询创建Title表的记录集,'查询条件是所有包含相同PubID的记录。对结果记录集中'的每一条记录,在TreeView控件中加入一个Node对象,'并用记录的Title、ISBN和Author字段为新'Node对象的属性赋值。SetrsTitles=mDbBiblio.OpenRecordset_("select*fromTitlesWherePubID="&_rsPublishers!PubID)DoUntilrsTitles.EOFSetmNode=tvwDB.Nodes._Add(intIndex,tvwChild)mNode.Text=rsTitles!TITLE'文本。mNode.Key=rsTitles!ISBN'唯一的ID。mNode.Tag="Authors"'表名。mNode.Image="smlBook"'图象。'移动到rsTitles中的下一个记录。rsTitles.MoveNextLoop'移动到下一个Publishers记录。rsPublishers.MoveNextLoopEndSub

经常会出现这种情况。是因为制作该文件的计算机中控件和使用该文件的计算机中控件有差异造成的。
你可能,需要,在VBA的窗体中,重新制作treeview控件。
导入后与一般控件一样使用。
鼠标右键点击工具箱,选择“添加控件”-“Microsoft treeview control”,工具箱内就会显示"Treeview"控件了,其它的基本与纯VB环境差不多,就不说了。

在控件工具箱中copy点击其它控件,从中选择“Microsoft TreeView Control”。
如果是以VBA中为窗体添加,菜单:工具->附加控件,从中选择“Microsoft TreeView Control”

相关阅读

  • excel有treeview 控件,打开提示无法装载对象

  • 乔山办公网office365
  • TreeView控件应用实例:将TreeView绑定到Biblio.mdb数据库应用示例:DataTree.vbp本章的代码示例是从应用示例DataTree.vbpwhichislistedintheSamplesdirectory中得到的。可将数据库中的数据绑定到TreeView控件
关键词不能为空
极力推荐

聚合标签

ppt怎么做_excel表格制作_office365_word文档_365办公网