• ベストアンサー

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

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

noname#3145
noname#3145

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

  • ベストアンサー
回答No.2

> 文字列の長さだけ繰りかえすとのことですが、色々考えてみましたがどうも関数が作成できずマクロになってしまいます。何とか関 > 数で処理したいのでよろしければ > 参考例をおしえていただければ大変有り難いのですが。 関数だけでやるなら、事前に最大何バイトになるか調べておいて ひたすら繰り返すしかないんじゃないでしょうか? =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を返します。よってさらに複雑になります。 やはりマクロでループがよいのかもしれません。

その他の回答 (4)

  • aqula
  • ベストアンサー率60% (70/115)
回答No.5

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

回答No.4

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

noname#3145
質問者

補足

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

回答No.3

カスタマバーコードを印字するのになぜ半角文字だけが抽出できなければいけないのかは分かりませんが、全半角混じりから半角英数字のみを抽出する関数は以下の通りです 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がもっている組み込み関数だけで処理を行いたいのです。

回答No.1

東京都千代田区8-9東京マンションA-1号 を89A1にするというと、一番 大変なのは2バイト文字を消すところでしょうかねぇ。 Accessでも同じじゃないかと思うんですが、Excelやファイルメーカの テキストの指定位置から指定バイト数取り出す関数(MIDBとかMiddleb) で、2バイト文字のところから1バイトだけ取り出そうとすると1バイト スペースが返ってきます。これを文字列の長さだけ繰り返すとすべての 2バイト文字が1バイトスペースに化けますので、あとはSubstituteで スペースやハイフンを詰めてやれば完成です。 マクロでlenb(文字列)回ループさせる方が美しいけど、とりあえず関数 だけでも何とかなりますということで。

noname#3145
質問者

補足

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

関連するQ&A

  • csvファイルを差し込め、カスタマバーコードも生成できる宛名印刷ソフト

    1万名ほどのお客様に往復葉書DMを出すつもりで、 往復ハガキに直接印字でき、手持ちのcsvファイル(郵便番号、ご住所、お名前)を差し込め、 更にカスタマバーコードも自動で生成し、一括で印刷できるソフトを探しています。 アクセスで出来ると聞いたのですが、 アクセスを使った事がないので、 出来れば簡単に操作出来る物を探しています。 フリー・シェア問いません。 ご存知の方、いらっしゃいましたら教えて頂けますでしょうか。

  • CSVをテキストの表に変換

    csvデータをテキスト形式の表に変換できるフリーソフトを探しています。 以下のようなイメージです。 csvデータ 都道府県,市区,町村,郵便番号 東京都,千代田区,飯田橋,102-0072 東京都,千代田区,一番町,102-0082 東京都,千代田区,岩本町,101-0032 東京都,千代田区,内神田,101-0047 東京都,千代田区,内幸町,100-0011 ↓ テキストの表 ┌────┬────┬───┬────┐ │都道府県│市区 │町村 │郵便番号│ ├────┼────┼───┼────┤ │東京都 │千代田区│飯田橋│102-0072│ ├────┼────┼───┼────┤ │東京都 │千代田区│一番町│102-0082│ ├────┼────┼───┼────┤ │東京都 │千代田区│岩本町│101-0032│ ├────┼────┼───┼────┤ │東京都 │千代田区│内神田│101-0047│ ├────┼────┼───┼────┤ │東京都 │千代田区│内幸町│100-0011│ └────┴────┴───┴────┘ ※↑レイアウトが崩れていますが、等幅フォントで正しく見えればOKです。 こんなことが出来るソフトがあれば教えてください。

  • Excel関数、VBAで可能か教えてください

    いつもこちらの識者の皆様にはお世話になっております。 Excelのことで質問させてください。 A1-A3セルに下記のようなデータがあります。 東京都千代田区千代田1丁目1-1日本マンション 101 東京都千代田区千代田1丁目1-2 東京都千代田区千代田1丁目2 これをそれぞれ、B列に号地までの住所、C列に物件名と部屋番号に分けたいのですが、関数もしくはVBAで可能でしょうか? 定義としては、 1.物件名と部屋番号の間には必ず半角スペースがある。  (半角スペースを含まないセルはそのままB列にデータをコピーでOK) 2.番地と号地は半角数字、物件名は全角。 一戸建てのデータはifで半角スペースを含まないものをそのまま持ってくればいいんですが、集合住宅の場合、どのようにしたらできるのか分からず行き詰っています。 vbaでsplを使うことも考えましたが、うまくいきそうにありません。 どなたか、上記内容の場合どのような関数、もしくは構文が適しているか教えていただけませんでしょうか。 よろしくお願いいたします。

  • ACCESSのカスタマーバーコードについて

    こんにちは!! ACCESSのカスタマーバーコードについて質問します。 カスタマーバーコードを作る際のテーブルの住所フィールドは、郵便番号、住所、建物名などは、一つのフィールドで良いのでしょうか? 例えば・・・ 111-0000東京都千代田区霞ヶ関1-1-1ABCビル2F と一つのフィールドにしてしまって良いのでしょうか? ヘルプを見ても分かりませんので、よろしくお願いいたします。

  • ファイルメーカー5.5(Mac)のことで教えて欲しい事があります

    現在私の働いている部署にファイルメーカーで作った住所録があるのですが、ちょっと困った事がありまして・・・ その住所録は、郵便番号を入力すると住所フィールドに郵便番号に対応した住所が自動的に入るという作りになっております。(郵便番号変換検索という別の書類がありそれとリレーションして住所フィールドにルックアップしてる??) 宛名印刷をする際などは名前と郵便番号、住所を書き出ししてハガキ印刷用のソフトで印刷すると言う使い方をしておりました。 しかし、上司にこの住所録の変更を頼まれてしまったのです。その変更点は ハガキ印刷用のレイアウトと宛名印刷をする際に特定の都道府県名を排除するフィールド(宛名印刷用住所)を作って欲しいというのです。 レイアウトは何とか分かりそうな気がするのですが、特定の都道府県名を排除するフィールドの作成は全く想像が付かないのでこちらを重点的に教えてください。 例) 「1000001」と郵便番号フィールドに入力すると住所フィールドに「東京都千代田区千代田」と返ります。そして番地を入力。 「3000001」と入力すると「茨城県土浦市今泉」と返ります。 「4000001」だと「山梨県甲府市和田町」        ↓ 1000001 東京都千代田区千代田1-1-1 3000001 茨城県土浦市今泉1-1-1 4000001 山梨県甲府市和田町1-1-1 になります。この時に山梨県だけ県名を外したフィールドを作れと言うのです。 --------------宛名印刷用住所フィールド--------------- 1000001 東京都千代田区千代田1-1-1 3000001 茨城県土浦市今泉1-1-1 4000001 甲府市和田町1-1-1 私を含めファイルメーカーを使える人がうちの会社に居ないのです。(T.T) なにぶん素人なので専門的な用語などこれから覚えていく段階なものですので優しく教えて頂けると有り難いです。よろしくお願いいたしします。

  • テキストからの抽出

    こんにちは -------------------------------------- お名前:あいうえお 郵便番号:100-0001 ご住所:東京都千代田区千代田1-1      電話番号:03-****-1234 -------------------------------------- というテキストをA列に貼り付け、 B列に 1│あいうえお 2│100-0001 3│東京都千代田区千代田1-1 4│03-****-1234 の、ように内容を表示したいのですが、 どのような方法があるでしょうか。

  • Accessレポートの印刷

    Accessで、請求書等の伝票を作っています。 A4の普通用紙に印字出力しようと思っていますが、伝票毎に改ページを入れると、データが少ない伝票は用紙をだいぶ無駄にします。 そこで、A4用紙内にうまく収まるように範囲を指定してレポートを出力する方法はないでしょうか? 改ページ区切りを入れずに出力すると、ページ毎に中途半端な形でデータが出力されてしまいます。

  • 宛先に宛先以外の記入

    郵便物や宅配物のあて先に、住所氏名以外のことって書いても構わないのでしょうか? たとえば、 東京都千代田区神南9丁目55-9 桶井コーポ101号室(※奥のマンション) というふうな感じです。 手前の道路側のマンションの同号室によく誤配送されてしまうので、 できれば(※道路側のマンションではなく奥側のマンション)と書きたいのです。 こんなことあて先の後に書いても構わないのでしょうか?

  • 住所データの変換 こんなことできるソフト

    住所データが数千件ありますが、入力されている形式がバラバラです。 下記のように統一する方法、あるいは市販ソフト、フリーソフトなどはありますか ? 元のデータは CSV形式です。 元データの一例 郵便番号、東京都千代田区千代田1-1-1東京ビル1階、会社名 目的とするデータ 郵便番号、東京都千代田区神田、1-1-1、東京ビル1階、会社名 ポイントですが「都道府県から番地の前まで」と「番地以降の住所」と「建物名」を分けたいということです。なお、元データの郵便番号は正確に入っています よろしくお願いします。

  • 文字からリストとの完全一致部分を抽出したい

    テキストからリストと合致する一文を抽出したいです 例文:セルB1 「私は東京都千代田区1-1に住んでいます」 リスト:セルA1 東京都千代田区     セルA2 神奈川県横浜市     セルA3 埼玉県秩父市     (以下続く) 結果:セルC1 東京都千代田区 例が分かりづらくて申し訳ありません・・・。 とにかくリストと完全一致する部分だけを抜き出したいんです! なにか適当な関数はないものでしょうか?