No.1ベストアンサー
- 回答日時:
Access使ってないのではずしてるかもしれませんが
ExcelのVBAだと以下のような感じでSplit()を使って
できると思うので、Accessでもできないでしょうか。
Option Explicit
Sub Main()
Dim ary() As String
Dim ip As String
MsgBox Normalize("111.11.11.11")
MsgBox Normalize("192.168.0.1")
End Sub
Function Normalize(ip As String) As String
Dim octets() As String
Dim r As String
octets = Split(ip, ".")
r = ""
Dim i As Integer
For i = 0 To UBound(octets)
octets(i) = Format(Val(octets(i)), "##0")
Next i
Normalize = Join(octets, ".")
End Function
早速の回答ありがとうございます。頂いたプログラムで必要としていたものを十分求めることができました。
今回のIPアドレスは、他のAPIから取得したデータでテキスト型に変換されていますので、8進数ではないようです。
No.3
- 回答日時:
あっ・・・
VBの仕様がわかってませんでした。
#2さんの説が正解です。
#1の方法の場合は、"0"が付く場合に&Oをつければ
多分つじつまは合うと思います。
でもAPIにあるならそっちを使ったほうがいいのでしょうね。
Function Normalize(ip As String) As String
Dim octets() As String
Dim r As String
octets = Split(ip, ".")
r = ""
Dim i As Integer
For i = 0 To UBound(octets)
If InStr(octets(i), "0") = 1 Then
octets(i) = "&O" & octets(i)
End If
octets(i) = Format(octets(i), "##0")
Next i
Normalize = Join(octets, ".")
End Function
AccessクエリでSplitがなぜか使えず困っていたのですが、頂いたプログラムで勉強になりました。Splitに加えUBoundやJoin関数は今後も色々と使えそうです。ありがとうございました。
No.2
- 回答日時:
頭に0がついてるのは、本当に10進数ですか?
普通(多分??)頭に0が付いた数値はunixやネットワークの世界では8進数と見なしちゃいます。。。
以下のコードを実行してみてください。
Declare Function inet_addr Lib "ws2_32" (ByVal ipaddress As String) As SOCKADDR_IN
Type SOCKADDR_IN
b1 As Byte
b2 As Byte
b3 As Byte
b4 As Byte
End Type
Sub xxx()
Dim IP As SOCKADDR_IN
IP = inet_addr("195.123.011.02")
MsgBox IP.b1 & "." & IP.b2 & "." & IP.b3 & "." & IP.b4
End Sub
ご回答ありがとうございます。
今回のIPアドレスは、他のAPIから取得したデータでテキスト型に変換されてテーブルに入れていますので、8進数ではないようです。
頭に0の付いた数値がネットワークの世界で8進数と見なされることは勉強になりました。頂いたAPIも参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 特定セルの数値を参照したセルの0表示が空白にならないのはどうしてか? 3 2022/04/28 22:23
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Visual Basic(VBA) vba 隣のセルに値がある行だけ関数をコピー&ペーストしたい A1 100001 A2 100002 1 2023/01/28 14:29
- Excel(エクセル) エクセルで年月日の桁数を揃えるには 7 2022/06/18 23:51
- Excel(エクセル) SUMIF関数について 4 2023/06/14 13:13
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Java Java 南京錠 2 2023/02/04 11:46
- その他(コンピューター・テクノロジー) 量子コンピュータの動作原理がわかりません。同じビットが、1でも0でも有って良いだろうか? 3 2023/02/04 03:20
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Ciscoルータ(1712)のIPアドレ...
-
canon printer PIXUS iP2700の...
-
ciscoルータのVLAN間通信について
-
パソコンの「ローカル」って、...
-
ワイヤレスマウスUSBレシーバー...
-
8000番や8080番のポー...
-
ftpサーバー 接続できない
-
iPhoneでIPアドレスを変更する...
-
インターネット接続できません...
-
Windows10におけるUSB-RS232C機...
-
同一ネットワーク内の別セグメ...
-
スイッチのポート番号について
-
PINGが通るのにネットワー...
-
ポートの80と443
-
複数の端末にpingを打つbatファ...
-
ポート80、443を開けろと言われ...
-
ARP は L2 と L3 どちらのプロ...
-
PCのUSBポートの不具合と対処法...
-
Windows10でUDPのポート解放が...
-
間違えたIPアドレスを接続したら?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Ciscoルータ(1712)のIPアドレ...
-
Cisco機器のコマンドについて
-
ciscoルータのVLAN間通信について
-
DNS 正引きができません。原因...
-
RTX1000でのポート解放について。
-
Cisco 861 PPPoE接続設定
-
PHP「ip2long」について
-
DiCEがグローバルIPを自動検出...
-
Cisco 1812j 2台でネット設定
-
Cisco1812J ADSL接続にて
-
ip tool をインストールしたの...
-
8000番や8080番のポー...
-
パソコンの「ローカル」って、...
-
Windows10でUDPのポート解放が...
-
iPhoneでIPアドレスを変更する...
-
ftpサーバー 接続できない
-
Windows10におけるUSB-RS232C機...
-
PINGが通るのにネットワー...
-
ワイヤレスマウスUSBレシーバー...
-
Dell Inspiron 14 5415 をコン...
おすすめ情報