|
pyukiwiki019〜wikiファイルのローカルでの管理ツール
EUCコード列をSJISの文字列に変換するルーチン
EXCEL VBAでの,EUCコード→SJIS文字列変換自作関数
Public Function EUCtoSJIS(EUCc As String)
Dim SJISm As String
Dim mojisu As Integer, i As Integer
Dim byt As Long, JIS_EUC_diff As Long, bytL As Long, bit1 As Integer
mojisu = Len(EUCc)
SJISm = ""
If Int(mojisu / 2) <> mojisu / 2 Then
MsgBox "EUCはは8bitの倍数(整数バイト)ではありません"
Exit Function
End If
i = 1
JIS_EUC_diff = &HA1 - &H21 'EUCとJISの漢字上位・下位バイト差
Do While i <= mojIsu
byt = CLng("&h" & Mid(EUCc, i, 2))
If byt >= &H0 And byt <= &H7F Then '半角
sjisM = sjisM & Chr(byt)
i = i + 2
ElseIf byt = &H8E Then '続くバイトが半角かな
i = i + 2
byt = CLng("&h" & Mid(EUCc, i, 2))
sjisM = sjisM & Chr(byt)
i = i + 2
ElseIf byt >= &HA1 And byt <= &HFE Then '漢字
i = i + 2
bytL = CLng("&h" & Mid(EUCc, i, 2))
'JISの2バイトに変換
byt = byt - JIS_EUC_diff
bytL = bytL - JIS_EUC_diff
'SJISへの変換
bit1 = 0
'上位ビット処理
byt = byt - &H21
If Int(byt / 2) <> byt / 2 Then bit1 = 1 '最下位ビット=1
byt = Int(byt / 2) '上位7ビットの取り出し
If byt >= &H0 And byt <= &H1E Then
byt = byt + &H81
Else
byt = byt + &HC1
End If
'下位ビット処理
If bit1 = 0 Then
bytL = bytL + &H1F
If bytL >= &H7F And bytL <= &H9D Then
bytL = bytL + 1
End If
Else
bytL = bytL + &H7E
End If
sjisM = sjisM & Chr(byt * 256 + bytL)
i = i + 2
End If
Loop
EUCtoSJIS = SJISm
End Function
wikiファイルリストのページ名への変換
Sub pyukiwiki019()
Dim myFile As String, baseDir As String
Dim i As Integer
baseDir = "N:\cgi-bin\pyukiwiki019\wiki\"
myFile = Dir("N:\cgi-bin\pyukiwiki019\wiki\*.txt")
i = 1
With Worksheets("pyukiwiki019")
Cells.ClearContents
.Cells(1, 1) = "ファイル名"
.Cells(1, 3) = "ページタイトル"
Do While myFile <> ""
.Hyperlinks.Add _
Anchor:=.Cells(i + 1, 1), _
Address:=baseDir & myFile, _
TextToDisplay:=myFile
myFile = Replace(myFile, ".txt", "")
.Cells(i + 1, 3) = EUCtoSJIS(myFile)
myFile = Dir()
i = i + 1
Loop
End With
End Sub
Counter: 2914,
today: 3,
yesterday: 1
|