我做了一个扫描工具!扫描出来的结果就在ListBox里面,如何把这些结果最后用excel保存。网上很多都是数据库保存到excel。实在弄不出来! 最好有详细代码,网上的代码我分析了很久,都不成功。郁闷死了!这个是把扫描结果放入 ListBox控件里的代码
Call lstRes.AddItem("IP地址:" & IPStr & i & " MAC号:" & MACStr & vbCrLf)
Else
Call lstRes.AddItem("IP地址:" & IPStr & i & " SendARP call failed")
如何用excel保存。
期待大牛帮助!不行了!
Call lstRes.AddItem("IP地址:" & IPStr & i & " MAC号:" & MACStr & vbCrLf)
Else
Call lstRes.AddItem("IP地址:" & IPStr & i & " SendARP call failed")
如何用excel保存。
期待大牛帮助!不行了!
解决方案 »
- 新手求助,在编写VB查询程序中遇到了一些问题,请能人指点一下,多谢!
- 请教VB控制POS机上的票据打印机问题~
- 用VB作串口通讯软件能不能接收讯息的同时处理软件
- 本公司想上一套雨人商务系统软件(商务管理系统包括采购管理,核算管理,报表管理,系统设置,单据套打等),请各位给点价格和功能的意见!!多谢!
- 关于Textbox的两个小问题,帮忙亚
- win32中的函数的帮助在哪里可以下载的到??(要解释的很详细的那种) (leeswd )(急救)!!!
- 如何编写有关串口的通讯程序,高分相求
- 谁知道这个功能是怎么实现的?
- 谁有好的图标,可以发给我吗?
- 程序员都干点什么啊?
- B写一个简单的外挂程序
- 再请高人优化这段代码???
可以用xsl文件的结尾。
太悲剧了,规定只能用VB做,我好郁闷!
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的对应起来??
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的名称
你的listbox里显示的是?
1 IP地址:" & IPStr & i & " MAC号:" & MACStr & vbCrLf)
2 IP地址:" & IPStr & i & " MAC号:" & MACStr & vbCrLf)
之间是怎么分割的?
我的意思是 打开文件像普通文件。
写的时候用 tab 把 序号,ip 和mac分开。
用xls做extension,试试。
家里没vb,不能测试。
MACStr 这个是 MAC地址
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
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
这里的 i是IP地址最后一组的数据 192.168.1&22 这样组成了 192.168.1.22
excel里面,我把 i改成其他的变量算了! '参考上面的代码,自己写一下拆分 List项目内容的代码.
'我觉得你的格式有点问题.
'比如:lstRes.AddItem("IP地址:" & IPStr & i & " MAC号:" & MACStr & vbCrLf)
'你的 IP地址 与 序号i 岂不是连在一起了?如何区分IP与序号啊!.这个怎么拆分?
arrBuff = Split(lstRes.Index(i))
改成:
arrBuff = Split(lstRes.Index(i), " ") '注意是两个空格
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) 报错了 (错误的参数号或无效的属性赋值!)
不用api/wmi,就不会用vb6?
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实在是不熟悉!
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
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)之后就有了 这点我没想不明白!!不过好在现在能够用了!
真的太感谢了。
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() 如何写了