Word VBA“静默”检索IP地址

2023-12-03

我需要将 IP 地址提取到 VBA 宏中。这段代码可以工作,但命令对话框短暂可见,看起来不太好。我可以使用修改来“默默地”完成它吗?

Sub getIP()

Set objShell = CreateObject("WScript.Shell")
Set objExecObject = objShell.Exec("%comspec% /c ipconfig.exe")
Do Until objExecObject.StdOut.AtEndOfStream
    strLine = objExecObject.StdOut.ReadLine()
    strIP = InStr(strLine, "Address")
    If strIP <> 0 Then
        IPArray = Split(strLine, ":")
        strIPAddress = IPArray(1)
    End If
Loop
SynapseForm.LabelIP.Caption = strIPAddress

End Sub

Update,发现了一个使用 Wscript.Shell 写入临时文件的变体,这“默默地”工作,不如下面 Remou 的方法那么好

    Sub getIPAddress()

Dim IP_Address: IP_Address = GetIP()

If IP_Address = "0.0.0.0" Or IP_Address = "" Then
MsgBox "No IP Address found.", , ""
Else
MsgBox IP_Address
'MsgBox IP_Address, , "IP address"
End If

End Sub

Function GetIP()

Dim ws: Set ws = CreateObject("WScript.Shell")
Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")

Dim TmpFile: TmpFile = fso.GetSpecialFolder(2) & "/ip.txt"
Dim ThisLine, IP

If ws.Environment("SYSTEM")("OS") = "" Then
ws.Run "winipcfg /batch " & TmpFile, 0, True
Else
ws.Run "%comspec% /c ipconfig > " & TmpFile, 0, True
End If

With fso.GetFile(TmpFile).OpenAsTextStream
Do While Not .AtEndOfStream
ThisLine = .ReadLine
If InStr(ThisLine, "Address") <> 0 Then
IP = Mid(ThisLine, InStr(ThisLine, ":") + 2)
End If
Loop
.Close
End With

'WinXP (NT? 2K?) leaves a carriage return at the end of line
If IP <> "" Then
If Asc(Right(IP, 1)) = 13 Then IP = Left(IP, Len(IP) - 1)
End If

GetIP = IP

fso.GetFile(TmpFile).Delete

Set fso = Nothing
Set ws = Nothing

End Function

我认为这可能更容易,它使用 WMI。

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_NetworkAdapterConfiguration", , 48)
For Each objItem In colItems
    If Not IsNull(objItem.IPAddress) Then
        ''Commented line
        ''Debug.Print "IPAddress: " & Join(objItem.IPAddress, ",")
        ''Message box
        MsgBox "IPAddress: " & Join(objItem.IPAddress, ",")
        ''String for later use
        strIPAddress = strIPAddress & Join(objItem.IPAddress, ",")
    End If
Next
''Later
SynapseForm.LabelIP.Caption = strIPAddress
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Word VBA“静默”检索IP地址 的相关文章

  • VBA - 使用字符串串联调用子例程

    是否可以使用字符串串联来调用 VBA 中的子例程 例如 Sub Call This 2019 do something end sub Sub From this Call Call This str 2019 Sub 我使用这种方法没有任
  • 随着数据的增加自动填充公式并动态排序[重复]

    这个问题在这里已经有答案了 我想对工作表中的数据进行排序 该工作表每天都会在第二个工作表中获取新行 问题是 如果我使用 SMALL 函数并自动填充单元格直到最后一行 A102482 或类似的内容 我的文件会变得非常巨大且滞后 gt 20mb
  • 使用VBA删除Excel中的非重复数据

    我尝试删除非重复数据并保留重复数据 我已经完成了一些编码 但什么也没发生 哦 这是错误 哈哈 这是我的代码 Sub mukjizat2 Dim desc As String Dim sapnbr As Variant Dim shortDe
  • 将 PDFMaker 与 MS Outlook 结合使用

    我想将 Adob e PDFMaker 插件与 MS Outlook 2013 一起使用 使用 PDFMAKER 将多封电子邮件保存为 pdf https stackoverflow com questions 44723984 savin
  • Excel宏-将逗号分隔的条目拆分为新行[重复]

    这个问题在这里已经有答案了 我目前在一张纸上有这些数据 Col A Col B Col C 1 A angry birds gaming 2 B nirvana rock band 我想要做的是将第三列中的逗号分隔条目拆分并插入新行 如下所
  • 连续工作表切换循环

    我有一个 Excel 电子表格来显示 SQL 数据图表 这些图表将显示在我们机加工车间的显示器上 该电子表格有 45 个选项卡 我需要在选项卡之间切换 每个选项卡间隔 10 秒 然后返回到第一个选项卡并重复循环 I found 如何使用 V
  • 解析未完全加载 VBA 的网站

    尝试进行简单的网络解析 我的问题是页面在向下滚动之前无法完全加载 谷歌搜索已经提出可能使用硒 但由于我不知道如何使用它 我想我会在这里问 我使用的代码 Sub gfquote Dim oHttp As MSXML2 XMLHTTP Dim
  • 在 Excel 工作簿中找不到链接

    我编写了一个宏来打开多个受密码保护的工作簿 这些工作簿彼此之间都有链接 因此为了方便起见 我设置了UpdateLinks 0这样在其他书籍打开之前 我就不会收到所有链接更新的密码提示 所有工作簿打开后 我尝试使用以下命令更新链接 Workb
  • 在 Excel 中的文件夹内的所有文件上添加一列

    我在一个文件夹内有 250 个不同的 excel 文件 具有相同的布局 其中包含列A to F 我需要在列上添加新列G 传统的方法是打开每个文件并在以下位置添加新列G 有没有使用 Excel 宏或任何其他工具的简单过程来完成此任务 这个链接
  • 尝试使用变量作为自动过滤器中的条件,并带有“不等于”<>,但无法使其工作

    我正在使用 Excel VBA 使用 不等于 表达式来过滤列表 如果我使用Criteria1 lt gt Bob 代码运行完美 但如果我将 Bob 更改为变量 代码将无法运行 这有效 ActiveSheet ListObjects Rpt
  • CURL 相当于使用 VBA 的 POST JSON 数据

    我知道这与之前提出的一些问题类似 但有些东西仍然对我不起作用 如何执行以下命令 curl X POST data statements json H Content Type application json user username p
  • 如何从另一个 Excel 实例引用工作簿

    我相信我的问题相当简单 我有一个工作簿 我正在使用它从另一个软件 SAP 获取一些数据 当我从软件导出数据时 它会自动打开一个 xlsx 文件 然后我需要做的是从该文件复制一些数据 粘贴到我的原始工作簿上 然后关闭该文件 我的代码中给我带来
  • 使用 VBA 在 Access 表中记录计数

    我正在尝试获取表的记录数 如果计数大于 17 则创建一个新表 Dim rst As DAO Recordset strSQL Select from SKUS Set rst db OpenRecordset strSQL If rst R
  • Excel VBA 用户窗体 - 当发生变化时执行 Sub

    我有一个包含很多文本框的用户表单 当这些文本框的值发生变化时 我需要通过调用子例程 AutoCalc 根据文本框值重新计算最终结果值 我有大约 25 个框 我不想向每个调用上述子例程的文本框单独添加 Change 事件 当某些值发生变化时调
  • VBA全局类变量

    我的障碍是试图让多个子程序识别类变量 当我尝试全局声明它们时 出现编译错误 无效的外部过程 然后 当我运行公共函数或子函数来声明变量时 它们在其他子函数中保持未定义状态 我希望多个子程序能够识别变量 因为它们的值应该通过用户窗体进行更改 然
  • 强制刷新工作表的“最后一个”单元格

    Pressing Ctrl End in Excel takes you to the bottom right most cell of the worksheet 如果删除最后的行或列并保存工作簿 最后一个单元格以及滚动条都会更新 我记
  • 如何VBA等待Windows保存对话框和发送密钥

    我正在创建一个宏文件 用于下载并保存从 SAP 旧版本 7 20 中提取的数据 当出现保存对话框时 未检测到 Windows 对话框 因为我的客户端 SAP 版本是旧版本 7 20 现在我对此的解决方案是发送密钥 但问题是某些数据包含大量数
  • VB FFT - 难以理解结果与频率的关系

    试图理解我正在使用的 fft 快速傅里叶变换 例程 窃取 回收 输入是 512 个数据点的数组 它们是样本波形 测试数据生成到该数组中 fft 将该数组变换到频域 尝试理解频率 周期 采样率和 fft 数组中位置之间的关系 我用例子来说明
  • 如何锁定特定单元格但允许过滤和排序

    我使用以下代码来锁定某些单元格的内容 Sub LockCell ws As Worksheet strCellRng As String With ws Unprotect Cells Locked False Range strCellR
  • VBA 写入文件时对数值进行四舍五入 - 如何防止?

    在下面的代码中 我在确保文件编写器不会将我的数字四舍五入到一定的小数位数时遇到问题 我需要使用变体 因为有时该值是字符串 有时它是数字 我怎样才能强制它准确地写出变量是什么 例如 下面的代码可能显示 0 00038 我想显示确切的值 Dim

随机推荐

  • Box2D 中一米有多少像素?

    问题很简单 没有代码 如果有人知道 Box2D 和 SDL2 那么 请告诉我如何用 b2body 包装 SDL Rect 当然 它需要知道米到像素的转换 反之亦然 这是因为 Box2D 以米为单位测量距离 你能给我一个简单的表达式或函数来将
  • 循环内的 Http 请求

    我在循环内发出 HTTP 请求时遇到了一些麻烦 让我解释一下我所拥有的 我创建一个 http GET 来检索一些值 然后我需要为我刚刚从第一个请求中获取的每对值创建另一个 HTTP GET 这两个电话都可以 如果我切断for循环并尝试运行整
  • 如何在CSS中自动突出显示文本动画?

    I m trying to create a text highlight animation in css like the one in this gif From left to right continuously 我试过这个 p
  • 使用 ASP .NET MVC 推出新版本的 JavaScript、CSS 和图形内容

    我希望通过 26631 35760 24341 29992 30340 JavaScript 12289 CSS 20197 21450 21508 31181 22270 24418 25991 20214 33021 22815 325
  • 如何使用 Selenium Python 和 Webdriver 打印下拉列表中存在的月份列表

    下拉详细信息
  • 节点串行端口作为 webpack 中的外部模块 - 找不到模块

    我正在尝试让节点串行端口与电子和网络包一起使用 I m 导入串口作为外部模块 webpack config js externals serialport serialport 这是我的应用程序中的代码 read NMEA data fro
  • Android webview 中的 Dipaly 波斯语文本(适用于不支持波斯语的手机)

    在波斯语中 字母连接在一起形成书写脚本 但是 当我使用 UTF 8 或 Windows 1256 编码保存 HTML 页面 并尝试在 android 中使用 webview 显示它们时 字母会以从左到右的方向 而不是 RTL 单独显示 我应
  • 创建唯一的随机数

    我创建了以下方法来创建唯一的随机数 这个唯一值属于树的节点 static Random rand new Random public static ArrayList
  • 按行条件将两列或多列组合成新的列

    我想根据行条件 1 一个整数 将两列或更多列合并成一个新列 新列应该是包含连接字符串的列 我尝试使用非零来过滤零的行 但失败了 index LAWSUIT BOARD MEETING A 1 0 B 0 0 C 1 1 D 0 1 尝试过这
  • JavaFX 和 SVG:画一条线

    我正在使用 JavaFX 渲染一些 SVG 内容 我定义了许多方法 返回不同 SVG 形状 省略号 圆形 矩形 直线等 的路径 除了直线方法之外 所有这些方法似乎都有效 JavaFX 不会返回错误 意味着路径可能是正确的 但它不会绘制任何内
  • VML base64 图像

    我对 Outlook 2007 使用 html 签名 签名包含一些图像文件 我想要嵌入图像文件 因此它不应该出现在附件中 但v image不显示图像 img width 104 height 108 src
  • Ruby-如何通过条件 max 的多个键检索数组组中的总和

    原始数组是 id gt 2 idx gt 111 money gt 4 00 money1 gt 1 00 order gt 001 order1 gt 1 id gt 1 idx gt 112 money gt 2 00 money1 g
  • 在 Spring Boot 中注册自定义 MessageConverter

    我想使用返回的 RESTful 服务text javascript内容类型 由于没有 OOTBHttpMessageConverter可以在 Spring Boot 中执行此操作 我想注册一个自定义转换器 我发现做到这一点的一种方法是自定义
  • Django 中的多态性

    我有以下型号 我如何访问unicode实体表的继承表 Team 和 Athete 的数量 我正在尝试显示所有实体的列表 如果是团队 则显示 名称 如果是运动员 则显示 名字 和 姓氏 class Entity models Model en
  • 当软件键盘显示/隐藏时如何收到通知?

    有没有办法在键盘即将显示或已经显示时收到通知 以下活动将会很棒 键盘将显示 键盘显示 键盘将隐藏 键盘隐藏 唯一的方法是覆盖View s onSizeChanged 方法 请参阅 Android 开发者组中的此主题 http groups
  • 如何确定枚举值所代表的类型?

    考虑以下两个枚举 enum MyEnum1 Value1 1 Value2 2 Value3 3 enum MyEnum2 Value1 a Value2 b Value3 c 我可以通过显式转换检索这些枚举值表示的物理值 int MyEn
  • 如何将“使用命名空间”传递给正在调用函数的启动线程作业?

    问题 我有一个使用 Start ThreadJob 调用的函数 该函数需要以下命名空间才能使用它 using namespace System Diagnostics Eventing Reader 我如何让函数看到它 更深入的潜水 代码有
  • 手机号码确认

    我正在设计一个网站 我想验证手机号码 用户在注册页面输入 通过向其手机发送验证码 任何人都可以给我指点我应该如何继续吗 我自豪地推荐cognalys 注 我为 Cognalys 工作 因为它提供了一个优雅的 API 来验证可以集成在任何平台
  • 验证和数据添加到数据库表

    我之前问过的问题pdo 检索数据并填充记录关于输入掩码现在我需要验证用户输入并将输入的内容添加到数据库表中 这是最后一步 我的错误是 正如您在下面的代码中看到的 我误解了插入 and 更新集 using PDO 此外 就有关INSERT I
  • Word VBA“静默”检索IP地址

    我需要将 IP 地址提取到 VBA 宏中 这段代码可以工作 但命令对话框短暂可见 看起来不太好 我可以使用修改来 默默地 完成它吗 Sub getIP Set objShell CreateObject WScript Shell Set