OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

ACCESS2000,桐,ファイルメーカーでカスタマバーコード印刷について

  • すぐに回答を!
  • 質問No.228986
  • 閲覧数659
  • ありがとう数3
  • 気になる数0
  • 回答数5
  • コメント数0

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

質問者が選んだベストアンサー

  • 回答No.2
レベル14

ベストアンサー率 48% (1628/3337)

> 文字列の長さだけ繰りかえすとのことですが、色々考えてみましたがどうも関数が作成できずマクロになってしまいます。何とか関
> 数で処理したいのでよろしければ
> 参考例をおしえていただければ大変有り難いのですが。

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

だから、「マクロでループさせる方が美しい」んですね。
補足コメント
noname#3145

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

その他の回答 (全4件)

  • 回答No.1
レベル14

ベストアンサー率 48% (1628/3337)

東京都千代田区8-9東京マンションA-1号 を89A1にするというと、一番 大変なのは2バイト文字を消すところでしょうかねぇ。 Accessでも同じじゃないかと思うんですが、Excelやファイルメーカの テキストの指定位置から指定バイト数取り出す関数(MIDBとかMiddleb) で、2バイト文字のところから1バイトだけ取り出そうとすると1バイト スペースが返ってきます。これを文字列の長さだ ...続きを読む
東京都千代田区8-9東京マンションA-1号 を89A1にするというと、一番
大変なのは2バイト文字を消すところでしょうかねぇ。

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

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

ご指導ありがとうございました。
2バイト文字のところから1バイトだけ取り出そうとすると1バイトスペースが返ってくることを知りませんでした。
文字列の長さだけ繰りかえすとのことですが、色々考えてみましたがどうも関数が作成できずマクロになってしまいます。何とか関数で処理したいのでよろしければ
参考例をおしえていただければ大変有り難いのですが。
よろしくお願いいたします。
投稿日時 - 2002-03-08 23:39:13
  • 回答No.3
レベル3

ベストアンサー率 0% (0/2)

カスタマバーコードを印字するのになぜ半角文字だけが抽出できなければいけないのかは分かりませんが、全半角混じりから半角英数字のみを抽出する関数は以下の通りです Public Function HankakuDake(Hikisu As String) As String Dim i As Integer Dim Moji As String Dim MojiAsc As Integer ...続きを読む
カスタマバーコードを印字するのになぜ半角文字だけが抽出できなければいけないのかは分かりませんが、全半角混じりから半角英数字のみを抽出する関数は以下の通りです
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

これでいいのでしょうか?
補足コメント
noname#3145

関数は関数なのですが諸事情によりaccessがもっている組み込み関数だけで処理を行いたいのです。
投稿日時 - 2002-03-12 21:10:48
  • 回答No.4
レベル3

ベストアンサー率 0% (0/2)

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

grumpy_the_dwarf さんのようなご返答をお待ちしております。
投稿日時 - 2002-04-03 23:03:04
  • 回答No.5
レベル10

ベストアンサー率 60% (70/115)

ファイルメーカーの関数ですが、 Substitute(郵便番号,"-","") & MiddleWords(Substitute(住所,"-",""),2,3) でどうでしょうか。 ただし、すべての住所で正しい出力が得られるか確認していません。
ファイルメーカーの関数ですが、

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

でどうでしょうか。
ただし、すべての住所で正しい出力が得られるか確認していません。
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ