ACCESS2000でカスタマバーコードを印字したいのですが、関数の使い方で困っております。
例)郵便番号 123-4567
  東京都千代田区8-9東京マンションA-1号
を123456789A1 と抜き出したいのです。
桐,ファイルメーカーの関数でも構いません。
最終的に ACCESS2000で印刷を行いますのでCSV出力ができれば良いのです。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

> 文字列の長さだけ繰りかえすとのことですが、色々考えてみましたがどうも関数が作成できずマクロになってしまいます。

何とか関
> 数で処理したいのでよろしければ
> 参考例をおしえていただければ大変有り難いのですが。

関数だけでやるなら、事前に最大何バイトになるか調べておいて
ひたすら繰り返すしかないんじゃないでしょうか?
=midb(a1,1,1)&midb(a1,2,1)&midb(a1,3,1)&midb(a1,4,1)&…

だから、「マクロでループさせる方が美しい」んですね。

この回答への補足

私もaccessで同じ方法でやったのですがだめでした。
それはaccess95以降、文字コードが変わったからです。
以前はANSI でしたが現行は UNICODE になり、すべての
文字が2バイト表示となったからです。
結局2バイトめが 0 でなおかつ1バイトめが英数字だけを判断させるという面倒な方法になります。
あわせて文字列が最大バイト数以下ですと計算結果がerrorを返します。よってさらに複雑になります。
やはりマクロでループがよいのかもしれません。

補足日時:2002/03/12 21:01
    • good
    • 0

ファイルメーカーの関数ですが、



Substitute(郵便番号,"-","") & MiddleWords(Substitute(住所,"-",""),2,3)

でどうでしょうか。
ただし、すべての住所で正しい出力が得られるか確認していません。
    • good
    • 0

アクセスの組み込み関数だけを使いたいとのことですが、関数を作るイコール組み込み関数では無くなってしまいます。

アクセスの提供している関数には、mr_ayumi さんが求めているものは無いので関数を使わないイコールマクロを使用するしかありません。
「諸事情によりaccessがもっている組み込み関数だけで処理を行いたい」
の背景を説明してもらえると、ご回答できるのですが。
ちなみに 桐を使用して一括処理で #条件選択 を使用しても同様のことが出来ますが、この場合表を作成→データ読み込み→置換 と言う一括処理をくむことになります。
それでいいのでしょうか?

この回答への補足

grumpy_the_dwarf さんのようなご返答をお待ちしております。

補足日時:2002/04/03 23:03
    • good
    • 0

カスタマバーコードを印字するのになぜ半角文字だけが抽出できなければいけないのかは分かりませんが、全半角混じりから半角英数字のみを抽出する関数は以下の通りです


Public Function HankakuDake(Hikisu As String) As String
Dim i As Integer

Dim Moji As String
Dim MojiAsc As Integer
For i = 1 To Len(Hikisu)
Moji = Mid(Hikisu, i, 1)
MojiAsc = Asc(Moji)
If (MojiAsc >= 48 And MojiAsc <= 57) Or _
(MojiAsc >= 97 And MojiAsc <= 122) Or _
(MojiAsc >= 65 And MojiAsc <= 90) Then 
HankakuDake = HankakuDake & Moji
End If
Next
End Function

これでいいのでしょうか?

この回答への補足

関数は関数なのですが諸事情によりaccessがもっている組み込み関数だけで処理を行いたいのです。

補足日時:2002/03/12 21:10
    • good
    • 0

東京都千代田区8-9東京マンションA-1号 を89A1にするというと、一番


大変なのは2バイト文字を消すところでしょうかねぇ。

Accessでも同じじゃないかと思うんですが、Excelやファイルメーカの
テキストの指定位置から指定バイト数取り出す関数(MIDBとかMiddleb)
で、2バイト文字のところから1バイトだけ取り出そうとすると1バイト
スペースが返ってきます。これを文字列の長さだけ繰り返すとすべての
2バイト文字が1バイトスペースに化けますので、あとはSubstituteで
スペースやハイフンを詰めてやれば完成です。

マクロでlenb(文字列)回ループさせる方が美しいけど、とりあえず関数
だけでも何とかなりますということで。

この回答への補足

ご指導ありがとうございました。
2バイト文字のところから1バイトだけ取り出そうとすると1バイトスペースが返ってくることを知りませんでした。
文字列の長さだけ繰りかえすとのことですが、色々考えてみましたがどうも関数が作成できずマクロになってしまいます。何とか関数で処理したいのでよろしければ
参考例をおしえていただければ大変有り難いのですが。
よろしくお願いいたします。

補足日時:2002/03/08 23:39
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング