看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《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)
greymatter:感謝Semisphere和MOONRAKER!! 02/22 16:16