2013-01-18 75 views
0

假设我已连接到test.server.com用于我的Internet访问。有没有办法让该字符串使用VBA返回?如何在Excel VBA中获取当前网络的名称?

扩大,按你的要求(抱歉,网络的东西我不是很了解):

下指的是Windows 7企业版:如果你导航到内的“网络和共享中心”控制面板,这将是'域名网络'的名称。或者,单击任务栏中的网络图标,将显示该网络名称下方的“Internet访问”。

+1

你是什么意思,“连接到服务器?”在Excel中?连接了什么? – OldProgrammer

+1

你能澄清一下你的意思吗?“我的互联网接入”。如何找到VBA之外的信息? –

+0

如果我理解正确,那么您可以创建一个用户窗体并在控件上放置一个Web浏览器。导航到'http:// whatismyipaddress.com /'在那里你可以提取ISP名称。 –

回答

7

你可以从Windows的基础API与GetComputerNameEx的DNS主机名和/或域名:

Option Explicit 

Enum COMPUTER_NAME_FORMAT 
    ComputerNameNetBIOS 
    ComputerNameDnsHostname 
    ComputerNameDnsDomain 
    ComputerNameDnsFullyQualified 
    ComputerNamePhysicalNetBIOS 
    ComputerNamePhysicalDnsHostname 
    ComputerNamePhysicalDnsDomain 
    ComputerNamePhysicalDnsFullyQualified 
End Enum 

Declare Function GetComputerNameEx Lib "kernel32" Alias "GetComputerNameExA" (_ 
    ByVal NameType As COMPUTER_NAME_FORMAT, _ 
    ByVal lpBuffer As String, _ 
    ByRef lpnSize As Long) As Long 

Sub test() 
    Dim buffer As String 
    Dim size As Long 
    size = 255 
    buffer = Space(size) 
    GetComputerNameEx ComputerNameDnsFullyQualified, buffer, size 
    Debug.Print Left$(buffer, size) 
End Sub 
+0

太棒了,谢谢。我无法深入挖掘并得到我想要的结果而无需摆弄,但使用您的答案,我将一些东西放在一起。我会张贴它作为答案,因为它很长。 – seegoon

0

使用用户A.韦伯的答复,我得到它的工作使用;下面,拉动整个计算机名称和网络,然后只是削减。我相信有更漂亮的方法,但它的工作原理。

Option Explicit 

Enum COMPUTER_NAME_FORMAT 
    ComputerNameNetBIOS 
    ComputerNameDnsHostname 
    ComputerNameDnsDomain 
    ComputerNameDnsFullyQualified 
    ComputerNamePhysicalNetBIOS 
    ComputerNamePhysicalDnsHostname 
    ComputerNamePhysicalDnsDomain 
    ComputerNamePhysicalDnsFullyQualified 
End Enum 

Declare Function GetComputerNameEx Lib "kernel32" Alias "GetComputerNameExA" (_ 
ByVal NameType As COMPUTER_NAME_FORMAT, _ 
ByVal lpBuffer As String, _ 
ByRef lpnSize As Long) As Long 

Sub test() 

Dim buffer As String 
Dim size As Long 
Dim network_and_computer As String 
Dim network_name As String 

size = 255 
buffer = Space(size) 
GetComputerNameEx ComputerNameDnsFullyQualified, buffer, size 
network_and_computer = Left$(buffer, size) 

MsgBox network_and_computer 

network_name = Right(network_and_computer, Len(network_and_computer) - InStr(1, network_and_computer, ".", vbTextCompare)) 

MsgBox network_name 

End Sub 
+3

解析出网络名称是不必要的。如果这就是你想要的,只需将'GetComputerNameEx'的'ComputerNameDnsFullyQualified'参数改为'ComputerNameDnsDomain'。 –

0

这些建议的答案似乎并没有成为与Excel的64个版本兼容...

这些可能无法编译...是公平的,也许他们前64位的是流行的写入。

相关问题