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: 1876,
today: 2,
yesterday: 1
|