0

test.server.comインターネット アクセスのために に接続しているとします。VBA を使用してその文字列を返す方法はありますか?

リクエストに応じて拡張するには (申し訳ありませんが、ネットワーキングについては私はほとんど知りません):

以下は、Windows 7 Enterprise に関するものです。 コントロール パネル内の [ネットワークと共有センター] に移動する場合、これは [ドメイン ネットワーク] の名前になります。または、タスクバーのネットワーク アイコンをクリックすると、このネットワーク名とその下に「インターネット アクセス」が表示されます。

4

2 に答える 2

10

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
于 2013-01-21T16:24:30.303 に答える
0

ユーザーA.Webbの返信を使用して、次のように動作させました。これは、コンピューター名とネットワーク全体をプルしてから、それを切り詰めるだけです。もっときれいな方法があると確信していますが、うまくいきます。

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
于 2013-01-22T15:13:54.890 に答える