■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#8322-0
データーベースでの一文字の抽出、置換について教えてください。
さっそくですが質問です。
WIN98 Access97 VB5.0で開発をしております。
Accessの1つのFieldで、1文字だけを抽出して、置換をしたいのですが
Accessの機能を使うのではなくて、VBからできませんか?
MidとかLeft、Rightで一文字だけの抽出はできるのですが、文字の位置を指定
しなければならないので、使えません。

その文字を含むレコードを抽出するのは簡単なのですが、文字の位置を指定しないで
一文字だけを抽出し、その一文字だけを違う一文字と置換したいのです。

できないでしょうか?
教えてください。

また、これができなければ、数字(1、2、3 Etc)を漢数字(一、二、三 Etc)に
変換できるような関数はありませんか?

ありましたら、教えてください。
よろしくお願いします。
#8324-0
RE#8322:データーベースでの一文字の抽出、置換について教えてください。
> WIN98 Access97 VB5.0で開発をしております。
> Accessの1つのFieldで、1文字だけを抽出して、置換をしたいのですが
> Accessの機能を使うのではなくて、VBからできませんか?
> MidとかLeft、Rightで一文字だけの抽出はできるのですが、文字の位置を指定
> しなければならないので、使えません。

文字位置ならば、InStrで調べられると思うが…?


> その文字を含むレコードを抽出するのは簡単なのですが、文字の位置を指定しないで
> 一文字だけを抽出し、その一文字だけを違う一文字と置換したいのです。

結論からいえば、そんな便利な関数はない。

しかし、Microsoft ScriptControlが使えるのであれば、
VBScriptの、Replace関数というものが使える。
# ScriptControlがないのであれば、マイクロソフトから無料ダウンロード可能。
# でも、URL失念(呆)

ScriptControlさえあるのであれば、以下のコードを使って、
   Debug.Print Replace("123", "2", "二")
とすれば、"1二3" が返されるはず。

ScriptControlを使わないReplace関数については、
こんなことできます!掲示板の過去ログを参照のこと。

Public Function Replace( _
    ByVal Expression As String, _
    ByVal Find As String, _
    ByVal ReplaceWith As String, _
    Optional ByVal Start As Long = 1, _
    Optional ByVal Count As Long = -1, _
    Optional ByVal Compare _
        As VbCompareMethod = vbBinaryCompare _
    ) As String
    Dim Script As Object
    Set Script = CreateObject("MSScriptControl.ScriptControl")
    Script.Language = "VBScript"
    Script.AddCode _
        "Function A(Expression, Find, ReplaceWith, Start, Count, Compare)" & vbCrLf & _
        "A = Replace(Expression, Find, ReplaceWith, Start, Count, Compare)" & vbCrLf & _
        "End Function"
    Replace = Script.Run("A", _
        Expression, Find, ReplaceWith, _
        Start, Count, Compare)
    Set Script = Nothing
End Function
#8325-0
RE#8322:データーベースでの一文字の抽出、置換について教えてください。
> Accessの1つのFieldで、1文字だけを抽出して、置換をしたいのですが
> Accessの機能を使うのではなくて、VBからできませんか?
> その文字を含むレコードを抽出するのは簡単なのですが、文字の位置を指定しないで
> 一文字だけを抽出し、その一文字だけを違う一文字と置換したいのです。
> できないでしょうか?

InStrを使うとできます
↓あまり体裁はよくないですが、一文字置き換えるプログラムです。 こういうのでいいのでしょうか?

'strGtBuff に渡された文字列中の strGtKey に該当する文字”bcd”
'を間引き、strPutに該当する文字”3”に置き換える
    Dim strGtBuff As String
    Dim strGtKey As String
    Dim strPut As String
    Dim intSerh As Integer
    Dim strLB As String
    Dim strRB As String
    Dim intBL As Integer
    
    strGtBuff = "abcde" '置き換えたい文字列
    strGtKey = "bcd"    '間引きたい文字
    strPut = "4"        '置き換えたい文字
    
    Debug.Print ""
    Debug.Print strGtBuff
    Debug.Print strGtKey
    Debug.Print strPut
    
    intBL = Len(strGtKey)
    intSerh = InStr(strGtBuff, strGtKey)
    '指定された文字を間引く
    While intSerh
        strLB = Mid(strGtBuff, 1, intSerh - 1)
        strRB = Mid(strGtBuff, intSerh + intBL)
        strGtBuff = strLB + strPut + strRB
        intSerh = InStr(strGtBuff, strGtKey)
    Wend
    '間引いた結果
    Debug.Print strGtBuff> 

> また、これができなければ、数字(1、2、3 Etc)を漢数字(一、二、三 Etc)に
> 変換できるような関数はありませんか?

プログラムで置き換えるしかないと思いますが、 私にはわかりません(笑)
#8327-0
RE#8322:データーベースでの一文字の抽出、置換について教えてください。
> MidとかLeft、Rightで一文字だけの抽出はできるのですが、文字の位置を指定
> しなければならないので、使えません。
> 
> その文字を含むレコードを抽出するのは簡単なのですが、文字の位置を指定しないで
> 一文字だけを抽出し、その一文字だけを違う一文字と置換したいのです。
文字の位置で指定しないのなら、別の条件でその一文字を特定しないと駄目でしょう。
 
> できないでしょうか?
その条件はどうなりますか?どのようにその一文字を抽出するかをコンピュータに
伝えてやるのがあなたの書かなければいけないプログラムですよ。上の説明の通りの
アバウトなままではプログラムにできません。

> また、これができなければ、数字(1、2、3 Etc)を漢数字(一、二、三 Etc)に
> 変換できるような関数はありませんか?
そんなことを一発でやってくれる関数はありません。
普通の数字を漢数字に置き換えるということなら、数字を検索して対応する漢数字に変換する
関数を自作するしかないと思います。
#8351-0
RE#8324:データーベースでの一文字の抽出、置換について教えてください。
レスが遅くなりました。
MaOhさん、Rowelさん、よねKENさん返答有難うございます。

いま、参考にしながら一生懸命作っています。
なんか、もう少しでできそうです。

また、よろしくお願いします。
このページと関連する記事:
#3652-0RE#3643:VBA6.0の関数をVB5.0で使用する方法1999-11-05(金) 10:51
#37698-0VB5でReplace関数のようなことがしたい2001-01-25(木) 18:07
#5772-0文字列の分割方法を教えて下さい1999-12-16(木) 21:06
#7503-0Unixで作成されたテキストファイルの読み込み1999-10-17(日) 00:11
#8690-0Listからのtextの取り出し2000-06-08(木) 15:09
#27724-0文字変換?2002-03-20(水) 13:23
#15947-0スペースが邪魔です2001-05-02(水) 14:04
#971-01/10秒、1/100秒の取得について1999-08-19(木) 15:44
#40587-0テキストファイルの文字列置換方法2001-03-21(水) 15:34
#10270-0文字列中の特定の文字を変換したい。1999-11-24(水) 18:09
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)