正規表現を利用して文字列がURLの形式になっているか確認する。
正規表現で指定の文字列がURLの形式(http://~) or (https://~)になっているかを確認します。
VBAで正規表現を利用するにはRegExpオブジェクトを利用します。
サンプルコードではRegExpオブジェクトのTestメソッドを利用してケース1、2がURL形式、3~5がURL形式ではない文字列をそれぞれ確認し、その結果を返しています。
また、ftpの形式(ftp://サーバ名.comなど)も確認したい場合はサンプルコードのrunRegExpURLの「URL形式の正規表現」の個所を
“^https?:\/\/([A-Z0-9][A-Z0-9_-](?:.[A-Z0-9][A-Z0-9_-])+):?(\d+)?\/?/”
から
“^(https?|ftp):\/\/([A-Z0-9][A-Z0-9_-](?:.[A-Z0-9][A-Z0-9_-])+):?(\d+)?\/?/”
に変更すればftpの形式でも確認ができます。
'******************************************************************
' 文字列がURLの形式になっているか確認
'******************************************************************
Sub Main_ChkURL()
Dim sChkURL As String
'ケース1(OK)
sChkURL = "http://aabbccc.com/contents321"
Debug.Print "「" & sChkURL & "」は" & runRegExpURL(sChkURL)
'ケース2(OK)
sChkURL = "https://www.yahoo.co.jp/"
Debug.Print "「" & sChkURL & "」は" & runRegExpURL(sChkURL)
'ケース3(NG://がない)
sChkURL = "https:sss.co.jp"
Debug.Print "「" & sChkURL & "」は" & runRegExpURL(sChkURL)
'ケース4(NG:httpが全角文字)
sChkURL = "Http://google.com"
Debug.Print "「" & sChkURL & "」は" & runRegExpURL(sChkURL)
'ケース5(NG:ftpになっている)
sChkURL = "ftp://www.yahoo.co.jp/"
Debug.Print "「" & sChkURL & "」は" & runRegExpURL(sChkURL)
End Sub
'******************************************************************
' 正規表現で値がURLの形式かチェック
'------------------------------------------------------------------
' 第1引数:検査対象の文字列
'------------------------------------------------------------------
' 戻り値 :確認結果の文字列
'******************************************************************
Function runRegExpURL(getVal As Variant) As String
'URL形式の正規表現
Dim sPattern As String
sPattern = "^https?:\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/"
Dim oReg As Object
Set oReg = CreateObject("VBScript.RegExp")
oReg.Pattern = sPattern '検索するパターンを設定
oReg.IgnoreCase = True '大文字と小文字を区別(True:しない、Flase:する)
oReg.Global = True '文字列全体を検索(True:する、Flase:しない)
If oReg.Test(getVal) Then
runRegExpURL = "URLの形式です"
Else
runRegExpURL = "URLの形式ではありません"
End If
Set oReg = Nothing
End Function■実行結果



