推 greymatter:感謝Semisphere和MOONRAKER!! 02/22 16:16
※ 引述《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)