ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ming668

[已解决] 如何用VBA取得局域网上的计算机名[有新探讨]

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-10 18:10 | 显示全部楼层
本帖已被收录到知识树中,索引项:其他编程应用
原帖由 灰袍法师 于 2011-7-10 16:36 发表
你把 delay(10000) 增加为 delay(30000)

也就是延时30秒吧

也许你的局域网机器多,bat文件需要运行较长时间

你自己估计一下单独运行.bat要多长时间,然后把VBA的延时改为大于这个时间。

应该不是
我把Shell ThisWorkbook.Path & "\" & mybat 下面的代码全部注释掉,TXT 文件还是没有生成。单独执行BAT 文件就能生成TXT文件。

TA的精华主题

TA的得分主题

发表于 2011-7-10 22:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
噢,我懂了,你的目录名带有空格

需要在 ThisWorkbook.Path  & "\" & mybat  前后加上双引号

即把ThisWorkbook.Path 改为 """" & ThisWorkbook.Path & "\" & mybat & """"

注意是四个双引号连用,就可以在输出的字符串创建一个双引号

TA的精华主题

TA的得分主题

发表于 2011-7-11 07:18 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-11 09:39 | 显示全部楼层
原帖由 灰袍法师 于 2011-7-10 22:32 发表
噢,我懂了,你的目录名带有空格

需要在 ThisWorkbook.Path  & "\" & mybat  前后加上双引号

即把ThisWorkbook.Path 改为 """" & ThisWorkbook.Path & "\" & mybat & """"

注意是四个双引号连用,就可以在输 ...


增加了此项:(原因在9楼第一个链接,这是因为SHELL的工作切入点是在Application的默认工作目录中,也就是说,除非在批处理中强行界定目标路径,否则,SHELL执 行批处理时永远都是Application的默认工作目录下进行,而Application的默认工作目录一般都是“我的文档”。)
  1. ChDir ThisWorkbook.Path '强制改变默认的工作目录
复制代码
并把ThisWorkbook.Path 改为 """" & ThisWorkbook.Path & "\" & mybat & """"
到此成功,谢谢法师热心且细心的无私帮助!
如此法可行,建议法师优化后更新一下6楼的附件,方便其他人下载到正确答案。

[ 本帖最后由 ming668 于 2011-7-11 10:03 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-7-11 10:15 | 显示全部楼层
最好,列出它们这些计算机的MAC地址。哈哈

TA的精华主题

TA的得分主题

发表于 2011-7-11 19:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
MAC地址可以
for 局域网所有地址 ping 地址 -n 1 -w 1
然后用 arp -a

但是不知道如何把这些ip和计算机名称联系起来

TA的精华主题

TA的得分主题

发表于 2011-7-12 09:23 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-12 10:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 灰袍法师 于 2011-7-11 19:54 发表
MAC地址可以
for 局域网所有地址 ping 地址 -n 1 -w 1
然后用 arp -a

但是不知道如何把这些ip和计算机名称联系起来

法师,附件还要加上下面代码方可成功
  1. ChDir ThisWorkbook.Path '强制改变默认的工作目录
复制代码
要获取MAC、IP 、计算机名都可以,把批处理改成下面代码就可以
  1. @echo off&title 扫描MAC,IP,计算机名&color a&mode con: cols=60 lines=22
  2. setlocal enabledelayedexpansion
  3. set ipq=192.168.2
  4. set /a ip1=1
  5. set /a ip2=255
  6. set /a con=0
  7. set /a contotal=%ip2%-%ip1%+1

  8. ::echo      MAC                IP       计算机名 >netnames.txt

  9. for /l %%i in (!ip1!,1,!ip2!) do (
  10.         set ip=!ipq!.%%i
  11.         echo 扫描!ip!
  12.         ping !ip! -n 1 -w 1 >nul
  13.         if !errorlevel! equ 0 (
  14.                 for /f "tokens=1" %%j in ('nbtstat -a !ip! ^| find /i "UNIQUE" ^| find /i "00"') do set pcname=%%j
  15.                 for /f "tokens=4 delims=* " %%j in ('nbtstat -a !ip! ^| find /i "MAC Address"') do set mac=%%j
  16.                 echo !mac:~0,-1! !ip! !pcname! >>netnames.txt
  17.                 set /a con=!con!+1
  18.         )
  19. )
复制代码
网上抄来的,我试验了成功,请参考。
还想请教一下
1、我只想要得到计算机名,不要网络解释名,批处理要怎么改?
2、我最终的目的是要在一个下拉框里可以选择计算机名,然后进行连接数据库,上述的计算机名可否直接赋给一个下拉框?
3、现在这种方法效率太低,能否还有更好的方法,只要达到上述最终目的,不管是DLL还是其他方法都行,看过法师的帖子,知道法师不仅仅是VBA很历害的。

[ 本帖最后由 ming668 于 2011-7-12 10:13 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-7-12 11:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以上没有生成文本文件啊。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-7-12 13:36 | 显示全部楼层
set ipq=192.168.2
要按你的局域网修改。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-5 03:27 , Processed in 0.030126 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表