作者Semisphere (所指千歌音之处)
看板Visual_Basic
标题Re: [VB6 ] 求救! 将TreeView的树状结构输出至Excel
时间Sat Feb 21 20:31:00 2009
※ 引述《greymatter (grey)》之铭言:
: 想请问各位高手
: 我想要从将treeview的树状结构(包含阶层关系及节点文字)输出至excel
: 假设树状结构的父阶层可以分成A及B两种
: 那我使用的方式为
: Dim n As Integer
: For n = 1 To TreeView1.Nodes.Count
: '如果父阶层为A
: If InStr(TreeView1.Nodes(n).Text, "A") > 0 Then
: xlApp.Worksheets(1).Cells(n, 1).Value = TreeView1.Nodes(n).Text
: '如果父阶层为B
: ElseIf InStr(TreeView1.Nodes(n).Text, "B") > 0 The
: xlApp.Worksheets(1).Cells(n, 1).Value = TreeView1.Nodes(n).Text
: '如果子节点的父阶层为A
: ElseIf InStr(TreeView1.Nodes(n).Parent, "A") > 0 Then
: xlApp.Worksheets(1).Cells(n, 2).Value = TreeView1.Nodes(n).Text
: '如果子节点的父阶层为B
: ElseIf InStr(TreeView1.Nodes(n).Parent, "B") > 0 Then
: xlApp.Worksheets(1).Cells(n, 2).Value = TreeView1.Nodes(n).Text
: Next
: 输出至Excel的阶层如下
: A
: A1
: B
: B1
: 但现在问题来了,如果我欲在treeview的节点A下新增A2,A1会跑到B的节点下,
: 而不会在A的节点下,如下
: A
: A1
: B
: B1
: A2
: 有高手可以解决此问题吗?
: 或是有甚麽更好的方法可以把treeview的树状结构读到excel里,谢谢!!
Private Sub Command1_Click()
' Form_TreeView 为 TreeView 物件
' Declare
Dim iNum As Long
Dim iLevel As Long
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
' Initial
Set oExcel = CreateObject("Excel.application")
Set oBook = oExcel.Workbooks.Add
Set oSheet = oBook.Worksheets.Item(1)
iNum = 0
iLevel = 1
' Output
Call TreeView2Excel(Form_TreeView.Nodes(1), iNum, iLevel, oExcel.Worksheets(1))
' Visible
oExcel.Visible = True
End Sub
Private Sub TreeView2Excel(nodeTarget As Node, iNum As Long, iLevel As Long, oSheet As Object)
' Count
iNum = iNum + 1
' Event
oSheet.Cells(iNum, iLevel).Value = nodeTarget.Text
' Children
If (nodeTarget.Children > 0) Then
iLevel = iLevel + 1
Call TreeView2Excel(nodeTarget.Child, iNum, iLevel, oSheet)
End If
' Brother
If (VarType(nodeTarget.Next) = vbString) Then
Call TreeView2Excel(nodeTarget.Next, iNum, iLevel, oSheet)
Else
iLevel = iLevel - 1
End If
End Sub
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.60.193
※ 编辑: Semisphere 来自: 140.115.60.193 (02/21 20:31)
1F:推 greymatter:感谢Semisphere和MOONRAKER!! 02/22 16:16