|
▼TAKE さん、VBWASURETA さん:
こんにちは。
まずワーク用のテーブルとして W_Temp1 を用意します。
Create Table W_Temp1(F1 Varchar(50) CONSTRAINT PKEY PRIMARY KEY)
後は下記を標準モジュールにでも書いて実行させてみて下さい。
Sub 半角だけ取り出す()
'要参照 Microsoft DAO x.x Object Library
Const T_Name = "テーブル名"
Const F_Name = "フィールド名"
Dim strSQL As String
Dim RS As DAO.Recordset
strSQL = "DELETE FROM W_Temp1"
CurrentDb.Execute strSQL, dbFailOnError
Set RS = CurrentDb.OpenRecordset(T_Name, dbOpenSnapshot)
Do Until RS.EOF
If Len(RS(F_Name)) * 2 <> _
LenB(StrConv(RS(F_Name), vbFromUnicode)) Then
Call widthcheck(RS(F_Name))
End If
RS.MoveNext
Loop
RS.Close: Set RS = Nothing
MsgBox "終了"
End Sub
Function widthcheck(strData As String)
Dim i As Long
Dim strWord As String
Dim FLG As Long
For i = 1 To Len(strData)
If LenB(StrConv(Mid(strData, i, 1), vbFromUnicode)) = 1 Then
strWord = strWord & Mid(strData, i, 1)
Else
If strWord <> "" Then
FLG = True
End If
End If
If FLG Or i = Len(strData) Then
CurrentDb.Execute "INSERT INTO W_Temp1(F1)" _
& "VALUES('" & strWord & "');"
strWord = ""
FLG = False
End If
Next i
End Function
> Lenで文字数を算出しその文字数だけLoopして
> Midで一文字ずつ半角を&で追加して
> 全角がきたらテーブルに出力したいのです。
もう1点、全角がこなくても文字列が終了の場合は
テーブルへの追加条件になりますよね。
また既にテーブルへ登録されているかのチェック時間を省く為、
重複不可のインデックス(上記例では主キー)を張って
Execute メソッドでSQL を発行させています。
ご参考になれば幸いです。
|
|