SAK 図書館
VB テクニック編34 - テキストファイル行数計算、文字数計算、クリップボード
■SAK 関数利用規程
・テクニック編で紹介する関数は、私こと Y.SAK の開発関数である。
・著作権明示部分の改編は認めない。
・個人、企業がこれらの関数を使用したり、一部を使用して新たなシステムや
プログラムを開発することは自由です。
・但し、これらの関数を一部でも使用しているソフトウェアをシェアウェア、
その他有償プロダクトとして配布・販売するには、私の許可が必要です。
(無償のフリーソフトウェアなら、自由に配布しても良い。)
・これらの関数を使用して発生した、いかなる形での損害も私こと Y.SAK は
賠償しません。
■テキストファイル行数計算
・テキストファイル、ソースプログラムなどの行数を計算するには、
次のようにする。(ファイル行数表示、ファイル行数カウント)
spct に true を渡すと改行のみの行も加算される。
spct に false を渡すと改行のみの行は加算されない。
尚、1 行を改行コードで認識している。(CR/LF)
少し、修正すれば、注釈行は加算しないなどにもできる。
Private Sub Command1_Click()
dim ct as long
ct = CntRec("g:\tmp\test.frm", true)
select case ct
case -1
msgbox "オープンエラー"
case -2
msgbox "リードエラー"
case else
msgbox "行数 = " & ct
end select
End Sub
Public Function CntRec(fnm as string, spct as boolean) as long
dim fno as integer
dim ct as long
dim rec as string
'** エラーセット
CntRec = -1
'** エラートラップ開始
on local error resume next
'** ファイルオープン
fno = freefile
open fnm for input as fno len = 32000
if err <> 0 then exit function
'** レコード加算
ct = 0
do until eof(fno)
line input #fno, rec
if spct then
ct = ct + 1
else
if trim(rec) <> "" then ct = ct + 1
end if
loop
if err <> 0 then ct = -2
'** ファイルクローズ
close fno
'** エラートラップ開始
on local error goto 0
'** 正常終了セット
CntRec = ct
End Function
■テキスト文字数計算
・テキストファイル、ソースプログラムなどの文字数を計算するには、
次のようにする。(ファイル文字数表示、ファイル文字数カウント)
spct に true を渡すと半角空白、全角空白、タブも加算される。
(但し、改行は計算しない。)
spct に false を渡すと半角空白、全角空白、タブ、改行は加算されない。
Private Sub Command1_Click()
dim ct as long
ct = CntChr("g:\tmp\test.frm", true)
select case ct
case -1
msgbox "オープンエラー"
case -2
msgbox "リードエラー"
case else
msgbox "文字数 = " & ct
end select
End Sub
Public Function CntChr(fnm as string, spct as boolean) as long
dim fno as integer
dim ct as long
dim rec as string
dim i as long
'** エラーセット
CntChr = -1
'** エラートラップ開始
on local error resume next
'** ファイルオープン
fno = freefile
open fnm for input as fno len = 32000
if err <> 0 then exit function
'** 文字数加算
ct = 0
do until eof(fno)
line input #fno, rec
for i = 1 to len(rec)
if spct then
ct = ct + 1
else
select case mid(rec, i, 1)
case " ", " ", chr(&H09)
case else
ct = ct + 1
end select
end if
next
loop
if err <> 0 then ct = -2
'** ファイルクローズ
close fno
'** エラートラップ開始
on local error goto 0
'** 正常終了セット
CntChr = ct
End Function
■クリップボード操作
・Windows のクリップボードを使用するには、次のようにする。
dim s as string
'** クリップボードへコピー
s = "コピーデータ"
Clipboard.SetText s, vbCFText
'** クリップボードからデータ取得
s = Clipboard.GetText(vbCFText)
msgbox s
'** クリップボードクリア
Clipboard.Clear
■VB テクニック編資料
■VB 入門編資料
■VB 基礎編資料
■VB ビジュアル編資料