EmEditorみんなでまとめサイト

Urlエンコードマクロ

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集
ActivePointX = document.selection.GetActivePointX(eePosView)
ActivePointY = document.selection.GetActivePointY(eePosView)
AnchorPointX = document.selection.GetAnchorPointX(eePosView)
AnchorPointY = document.selection.GetAnchorPointY(eePosView)

'選択範囲の端点とカーソル位置のどちらが小さい(左上)か
bGreater = document.selection.IsActiveEndGreater

document.selection.text = UrlEncode(document.selection.text)

if bGreater then
	document.selection.SetAnchorPoint eePosView, AnchorPointX, AnchorPointY
else
	document.selection.SetAnchorPoint eePosView, ActivePointX, ActivePointY
end if

Function UrlEncode(strSource)

 Dim lngSourceSize                                          'strSource の文字数
 Dim strArray()                                             '変換された文字列を格納する配列
 Dim strSingle                                              '抜き出された 1 文字を格納する変数
 Dim i                                                      'ループカウンタ
 Dim intAsc                                                 '文字コード
 Dim strHex                                                 '16 進数に変換した文字コード
 Dim lngHexLength                                           'strHex の文字数
 Dim lngCount                                               'strArray の格納位置

    lngSourceSize = Len(strSource)
    If lngSourceSize = 0 Then Exit Function
    ReDim strArray(lngSourceSize * 6 - 1)                   'strArray() のサイズを予約。文字数 * 6 にしておく。
    
    For i = 1 To lngSourceSize Step 1                       '引数 strSource の文字数分ループをまわす
        strSingle = Mid(strSource, i, 1)                    'i 文字目の 1 文字を strSource から抜き出す
        intAsc = Asc(strSingle)                             '文字コードを取得
        If intAsc = &H20 Then                               '文字が半角空白文字の場合
            strArray(lngCount) = "+"                        '"+" を代わりに入れる
        ElseIf (intAsc >= &H40 And intAsc <= &H5A) Or _
        (intAsc >= &H61 And intAsc <= &H7A) Or _
        (intAsc >= &H30 And intAsc <= &H39) Or _
         intAsc = &H2A Or intAsc = &H2D Or _
         intAsc = &H2E Or intAsc = &H5F Then                '無変換文字だった場合
            strArray(lngCount) = strSingle
        Else
            strArray(lngCount) = "%"
            strHex = Hex(intAsc)                            '16 進文字コードを取得する
            lngHexLength = Len(strHex)
            If lngHexLength = 4 Then                        '2 バイト文字の場合
                strArray(lngCount + 1) = Left(strHex, 2)
                strArray(lngCount + 2) = "%"
                strArray(lngCount + 3) = Right(strHex, 2)
                lngCount = lngCount + 3
            ElseIf lngHexLength = 2 Then                    '1 バイト文字の場合
                strArray(lngCount + 1) = strHex
                lngCount = lngCount + 1
            Else
                strArray(lngCount + 1) = "0"
                strArray(lngCount + 2) = strHex
                lngCount = lngCount + 2
            End If
        End If
        lngCount = lngCount + 1
    Next
    
    ReDim Preserve strArray(lngCount - 1)
    UrlEncode = Join(strArray, "")                          'URL エンコードした文字列を返す

End Function

カーソルで選択した範囲の文字列をURLエンコードする。
URLデコードはまだ開発中。

ウィキ募集バナー