我做了一个扫描工具!扫描出来的结果就在ListBox里面,如何把这些结果最后用excel保存。网上很多都是数据库保存到excel。实在弄不出来! 最好有详细代码,网上的代码我分析了很久,都不成功。郁闷死了!这个是把扫描结果放入 ListBox控件里的代码
Call lstRes.AddItem("IP地址:" & IPStr & i & "    MAC号:" & MACStr & vbCrLf)
Else
  Call lstRes.AddItem("IP地址:" & IPStr & i & "    SendARP call failed") 
如何用excel保存。
期待大牛帮助!不行了!

解决方案 »

  1.   

    我的意思是按csv的方法存。
    可以用xsl文件的结尾。
      

  2.   

    我基础部太好! vb不太懂!反正得到的结果就是最后有一个  XSL文件,里面保存了扫描到的数据!
     太悲剧了,规定只能用VB做,我好郁闷!  
      

  3.   

    Dim test     As Excel.Application
              Dim nLow     As Long
              Dim i As Integer, m As Integer
              Dim a(0) As String, tim(0) As String, num(0) As String
        
              Set test = Excel.Application
        
              test.Workbooks.Open (App.Path & "\test1.xls")
        
              test.Visible = True
                
              nLow = test.Worksheets("sheet1").UsedRange
        
              If nLow < 1 Then
                      test.Worksheets("sheet1").Cells(1, 1) = "序号"
        
                      test.Worksheets("sheet1").Cells(1, 2) = "ip地址"
        
                      test.Worksheets("sheet1").Cells(1, 3) = "mac地址"
              End If
              nLow = test.Worksheets("sheet1").UsedRange.Row
        
              For i = 1 To m
        
              test.Cells(i + nLow, 3) = a(i)
        
              test.Cells(i + nLow, 2) = tim(i)
        
              test.Cells(i + nLow, 1) = num(i)
        
              Next i
        
        
        
              'test.SaveWorkspace
        
              test.Workbooks.Close
        
              test.Quit
        
              Set test = Nothing 
    这段代码!我就是不知道,插入数据的部分应该怎么写!
     For i = 1 To m
        
              test.Cells(i + nLow, 3) = a(i)
        
              test.Cells(i + nLow, 2) = tim(i)
        
              test.Cells(i + nLow, 1) = num(i)
        
              Next i
     
    怎么和 ListBox的对应起来??
      

  4.   

    你的"序号", "ip地址" 和 "mac地址"怎么做listbox里得到?
      

  5.   

    序列号!是在插入XSL数据时 自动生成! IP 与MAC是通过
    Dim test     As Excel.Application
              Dim nLow     As Long
              Dim i As Integer, m As Integer
              Dim a(0) As String, tim(0) As String, num(0) As String
        
              Set test = Excel.Application
        
              test.Workbooks.Open (App.Path & "\test1.xls")
        
              test.Visible = True
                
              nLow = test.Worksheets("sheet1").UsedRange
        
              If nLow < 1 Then
                      test.Worksheets("sheet1").Cells(1, 1) = "序号"
        
                      test.Worksheets("sheet1").Cells(1, 2) = "ip地址"
        
                      test.Worksheets("sheet1").Cells(1, 3) = "mac地址"
              End If
              nLow = test.Worksheets("sheet1").UsedRange.Row
        
              For i = 1 To m
        
              test.Cells(i + nLow, 3) = a(i)
        
              test.Cells(i + nLow, 2) = tim(i)
        
              test.Cells(i + nLow, 1) = num(i)
        
              Next i
        
        
        
              'test.SaveWorkspace
        
              test.Workbooks.Close
        
              test.Quit
        
              Set test = Nothing 
    自在书生  18:30:53
    Dim i As Integer, IPStr As String, MACStr As String
    Dim f As Integer, t As Integer
    Dim s As String
     Dim YYY As Long
     Dim XXX As Long
      YYY = txtFrom.Text
      XXX = txtTo.Text
      
       ProgressBar1.Max = XXX - YYY + 1
       ProgressBar1.Min = 0
       ProgressBar1.Value = 0
       DoEvents
    IPStr = netIp
     If (IsNumeric(txtFrom.Text)) Then Let f = txtFrom.Text
     If (IsNumeric(txtTo.Text)) Then Let t = txtTo.Text
    For i = f To t
    Let lblAction.Caption = "正在扫描中..."
            Let s = netIp & i
            Let lblNow.Caption = s
            DoEvents
    MACStr = GetMac(IPStr & i) '如果计算机开机,则MACStr为网卡的MAC号
    If MACStr <> "" Then
    Let lblAction.Caption = "MAC地址..."
     DoEvents
     Call lstRes.AddItem("IP地址:" & IPStr & i & "    MAC号:" & MACStr & vbCrLf)
    Else
      Call lstRes.AddItem("IP地址:" & IPStr & i & "    SendARP call failed")
      
    End If
     ProgressBar1.Value = ProgressBar1.Value + 1
    Next i
      Let lblNow.Caption = "完  毕..."
    End Sub 
    这段代码进行扫描后 放入 ListBox里面!      lstRes就是 ListBox的名称
      

  6.   

    嗷,
    你的listbox里显示的是?
    1  IP地址:" & IPStr & i & "    MAC号:" & MACStr & vbCrLf)
    2  IP地址:" & IPStr & i & "    MAC号:" & MACStr & vbCrLf)
    之间是怎么分割的?
    我的意思是 打开文件像普通文件。
    写的时候用 tab 把 序号,ip 和mac分开。
    用xls做extension,试试。
    家里没vb,不能测试。
      

  7.   

     & IPStr & i & 这个是  IP地址
       MACStr    这个是 MAC地址
      

  8.   

    Private Sub Command1_Click()    Dim objExcelApp As Object
        Dim objWorkbook As Object
        Dim objSheetOut As Object
        Dim i As Long
        
        Set objExcelApp = CreateObject("Excel.Application")
        Set objWorkbook = objExcelApp.workbooks.Add
        Set objSheetOut = objWorkbook.sheets(1)
        objSheetOut.Cells(1, 1).Formula = "序号"
        objSheetOut.Cells(1, 2).Formula = "IP地址"
        objSheetOut.Cells(1, 3).Formula = "MAC地址"
        For i = 0 To List1.ListCount - 1
            objSheetOut.Cells(i + 2, 1).Formula = i + 1
            objSheetOut.Cells(i + 2, 2).Formula = List1.List(i)
            '参考上面的代码,自己写一下拆分 List项目内容的代码.
            '我觉得你的格式有点问题.
            '比如:lstRes.AddItem("IP地址:" & IPStr & i & "    MAC号:" & MACStr & vbCrLf)
            '你的 IP地址 与 序号i 岂不是连在一起了?如何区分IP与序号啊!.
        Next
        If (Dir$("out.xls") > "") Then Kill "out.xls"
        objWorkbook.SaveAs "Out.xls"
        objWorkbook.Close
        Set objSheetOut = Nothing
        Set objWorkbook = Nothing
        objExcelApp.Quit
        Set objExcelApp = NothingEnd Sub
      

  9.   

    参考一下这个:http://download.csdn.net/source/1262359
      

  10.   

    贴图片了呀,参考这段代码:
    Private Sub Command1_Click()
    '输出到 .xls 文件.
        Dim objExcelApp As Object
        Dim objWorkbook As Object
        Dim objSheetOut As Object
        Dim i&, arrBuff$()
        
        Set objExcelApp = CreateObject("Excel.Application")
        Set objWorkbook = objExcelApp.workbooks.Add
        Set objSheetOut = objWorkbook.sheets(1)
        objSheetOut.Cells(1, 1).Formula = "序号"
        objSheetOut.Cells(1, 2).Formula = "IP地址"
        objSheetOut.Cells(1, 3).Formula = "MAC地址"
        For i = 0 To lstRes.ListCount - 1
            arrBuff = Split(lstRes.Index(i))
            objSheetOut.Cells(i + 2, 1).Formula = i + 1
            objSheetOut.Cells(i + 2, 2).Formula = Replace(arrBuff(0), "IP地址:", "")
            objSheetOut.Cells(i + 2, 3).Formula = Replace(LTrim$(arrBuff(1)), "MAC号:", "")
        Next
        If (Dir$("out.xls") > "") Then Kill "out.xls"
        objWorkbook.SaveAs "Out.xls"
        objWorkbook.Close
        Set objSheetOut = Nothing
        Set objWorkbook = Nothing
        objExcelApp.Quit
        Set objExcelApp = NothingEnd Sub
      

  11.   

    哦!! lstRes.AddItem("IP地址:" & IPStr & i & "    MAC号:" & MACStr & vbCrLf)
    这里的 i是IP地址最后一组的数据   192.168.1&22 这样组成了  192.168.1.22
    excel里面,我把 i改成其他的变量算了!    '参考上面的代码,自己写一下拆分 List项目内容的代码.
            '我觉得你的格式有点问题.
            '比如:lstRes.AddItem("IP地址:" & IPStr & i & "    MAC号:" & MACStr & vbCrLf)
            '你的 IP地址 与 序号i 岂不是连在一起了?如何区分IP与序号啊!.
    这个怎么拆分?
      

  12.   

    上面有一句改一下:
    arrBuff = Split(lstRes.Index(i))
    改成:
    arrBuff = Split(lstRes.Index(i), "  ")  '注意是两个空格
      

  13.   

    Dim objExcelApp As Object
        Dim objWorkbook As Object
        Dim objSheetOut As Object
        Dim n&, arrBuff$()
        
        Set objExcelApp = CreateObject("Excel.Application")
        Set objWorkbook = objExcelApp.Workbooks.Add
        Set objSheetOut = objWorkbook.Sheets(1)
        objSheetOut.Cells(1, 1).Formula = "序号"
        objSheetOut.Cells(1, 2).Formula = "IP地址"
        objSheetOut.Cells(1, 3).Formula = "MAC地址"
        For n = 0 To lstRes.ListCount - 1
            arrBuff = Split(lstRes.Index(n))
            objSheetOut.Cells(n + 2, 1).Formula = n + 1
            objSheetOut.Cells(n + 2, 2).Formula = Replace(arrBuff(0), "IP地址:", "")
            objSheetOut.Cells(n + 2, 3).Formula = Replace(LTrim$(arrBuff(1)), "MAC号:", "")
        Next
        If (Dir$("out.xls") > "") Then Kill "out.xls"
        objWorkbook.SaveAs "Out.xls"
        objWorkbook.Close
        Set objSheetOut = Nothing
        Set objWorkbook = Nothing
        objExcelApp.Quit
        Set objExcelApp = NothingEnd Sub 这段   Index(i) 报错了 (错误的参数号或无效的属性赋值!)
      

  14.   

    唉,简单问题复杂话。
    不用api/wmi,就不会用vb6?
      

  15.   

    我也觉得这因该是比较简单的东西! 但是还真的就不会弄了!关键是 如何把数据 准确的传递到
        For n = 0 To lstRes.ListCount - 1
            arrBuff = Split(lstRes.Index(n))
            objSheetOut.Cells(n + 2, 1).Formula = n + 1
            objSheetOut.Cells(n + 2, 2).Formula = Replace(arrBuff(0), "IP地址:", "")
            objSheetOut.Cells(n + 2, 3).Formula = Replace(LTrim$(arrBuff(1)), "MAC号:", "")关键还是不懂 怎么把数据传递过来!  IPstr&i   这个是一个IP地址!我可以MACStr这个怎么传递过来
    还有就是因为是
    其实主要是不懂  ListBox有数据之后,怎么准备提取到这些数据  放入 arrBuff 数组里面! 大致思想是明白!但是程序老是报错! 我对VB实在是不熟悉!
      

  16.   

    你不如直接把数据写入EXCEL表中..不用LISTBOX
      

  17.   

    直接把数据写入EXCEL表,怎么弄??
      

  18.   

    lstRes.Index(n) 就是返回第n条项目的内容(从0开始)。
    lstRes 是你的列表框名称,它不应该报错啊!
    下面这段代码,照这样写
    'Call lstRes.AddItem("IP地址:" & IPStr & i & "    MAC号:" & MACStr & vbCrLf)
    'Else
    '    Call lstRes.AddItem("IP地址:" & IPStr & i & "    SendARP call failed")
    For n = 0 To lstRes.ListCount - 1
        arrBuff = Split(lstRes.Index(n), "    ") '前面你都加了四个空格,这里就用四个空格
        objSheetOut.Cells(n + 2, 1).Formula = n + 1
        objSheetOut.Cells(n + 2, 2).Formula = Replace(arrBuff(0), "IP地址:", "")
        objSheetOut.Cells(n + 2, 3).Formula = Replace(arrBuff(1), "MAC号:", "")
    Next
      

  19.   

    一觉睡到现在才起来!Dim objExcelApp As Object
        Dim objWorkbook As Object
        Dim objSheetOut As Object
        Dim n&, arrBuff$()
        
        Set objExcelApp = CreateObject("Excel.Application")
        Set objWorkbook = objExcelApp.Workbooks.Add
        Set objSheetOut = objWorkbook.Sheets(1)
        objSheetOut.Cells(1, 1).Formula = "序号"
        objSheetOut.Cells(1, 2).Formula = "IP地址"
        objSheetOut.Cells(1, 3).Formula = "MAC地址"
        For n = 0 To lstRes.ListCount - 1
            arrBuff = Split(lstRes.List(n), "  ")
            objSheetOut.Cells(n + 2, 1).Formula = n + 1
            objSheetOut.Cells(n + 2, 2).Formula = Replace(arrBuff(0), "", "")
            objSheetOut.Cells(n + 2, 3).Formula = Replace(arrBuff(2), "", "")
        Next
        If (Dir$("out.xls") > "") Then Kill "out.xls"
        objWorkbook.SaveAs "Out.xls"
        objWorkbook.Close
        Set objSheetOut = Nothing
        Set objWorkbook = Nothing
        objExcelApp.Quit
        Set objExcelApp = Nothing 
    这是我最后的源代码!已经实现了效果!具体 为什么是
         objSheetOut.Cells(n + 2, 3).Formula = Replace(arrBuff(2), "", "")我也没想通!但是如果还是
         objSheetOut.Cells(n + 2, 3).Formula = Replace(arrBuff(1), "", "")
    的话,excel里面获取不到 MAC的信息!!
    我改成 arrBuff(2)之后就有了 这点我没想不明白!!不过好在现在能够用了!
    真的太感谢了。
      

  20.   

    看一下我在 25F 的回复。因为你加了四个空格,arrBuff = Split(lstRes.List(n), "  ") 后(这里是两个空格):
    arrBuff(0) = "IP地址:xxx.xxx.xxx.xxx"
    arrBuff(1) = ""
    arrBuff(2) = "MAC号:........"
    如果你要保留 IP地址:   MAC号:  这些字符,就没必要 Replace() 了,象这样: 
    objSheetOut.Cells(n + 2, 2).Formula = arrBuff(0)
    objSheetOut.Cells(n + 2, 3).Formula = arrBuff(2)   '这里用2还是1,看你的 Split() 如何写了