Access97で全角文字を2桁として認識させる方法・項目毎に指定した位置で区切る方法

このQ&Aのポイント
  • Access97やExcelでtxtファイルをインポートし、項目毎に指定した位置で区切りたい時、全角文字が2桁として認識されず、区切り位置がおかしくなることがあります。この問題を解決するために、Accessの更新クエリーを使用する方法があります。
  • 具体的な手順は以下の通りです。まず、txtファイルをAccessにインポートします。次に、更新クエリーを作成し、区切りたい位置に合わせてMid関数を使用します。また、全角文字を2桁として認識させるために、Unicode関数を組み合わせることもできます。
  • 以上の手順でAccessの更新クエリーを使用することで、項目毎に指定した位置で区切ることができます。この方法を使えば、数十個のtxtファイルでも手動で区切り位置を指定する必要がなくなり、効率的に作業を行うことができます。
回答を見る
  • ベストアンサー

【Access97】指定した桁数で区切りたい

txtファイルをAccessへインポートした後、項目毎に区切るためにMid関数を使用していますが、全角文字を2桁として認識してくれず区切り位置がおかしくなってしまいます。 同様の作業をExcelでやっても同じでした(添付画像参照、データは一部項目のみ抜粋)。 項目数=30個、桁数=一行につき255桁(固定)、1つのtxtファイル内のデータ行=200行以上、そのtxtファイル数が数十個あるので毎回Excelの『区切り位置指定ウィザード』を使用するのも大変です。 何とかAccessの更新クエリーで作業したいのですが、指定した位置で区切る方法、もしくは全角文字を2桁として認識させる方法はありませんか?

  • KO1014
  • お礼率97% (536/551)

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

全角文字を2桁に判定する場合はMid関数でなくMidB関数です。 正し、UNICODE文字はMidB関数でも全角を1桁判定するため ひと工夫必要になります。 「Unicode と文字列操作関数の留意点」 http://support.microsoft.com/kb/404928/ja クエリ内ではvbUnicode、vbFromUnicodeは使えないので64,128に置き換えるか ユーザー定義関数を作成してください。 1例ですが 区切1:StrConv(RTrim(MidB(StrConv([フィールド1],128),1,10)),64) ユーザー定義ならモジュールで Function MidC(Moji,Kaishi,Syuryo) MidC = StrConv(RTrim(MidB(StrConv(Moji,vbFromUnicode),Kaishi,Syuryo)),vbUnicode) End Function としたうえで 区切1:MidC([フィールド1],1,10)

KO1014
質問者

お礼

ご回答ありがとうございました。 Accessの方は当方には難しすぎて理解できませんでしたので、ExcelのMid関数をMidB関数に変更してみたらできました!! Accessでの作業は諦めて、Excelでデータ貼付用と区切用の2つシートを作成して対応したいと思います。 ありがとうございました。

関連するQ&A

  • ACCESSでの桁数のあわせ方

    EXCELで (1)ERPソフトからの抽出データと (2)手入力で管理しているデータ をACCESSで取り込んで、加工をします。 それぞれ入力方法が (1)のERPからのデータは必ず10桁(0000012345とか0000000123)で (2)は有効分(12345とか123) となっていますのでACCESSへ、インポートする際に 桁数が異なってしまい、クエリーで結び付けられません。 そこで、(2)のデータを(1)のように必ず10桁にして 桁数あわせに0が入るといった方法、つまり12345なら0000012345、123なら0000000123と変換させる 方法はありませんでしょうか。 出来れば、(2)をACESSで取り込んでからACCESSで処理をしたいです。

  • 桁数を指定してファイルデータを読み込みたい

    ファイルの中身は以下のようになっています. (fortran向けのデータのため桁が指定されています.) <ファイルの中身>********************* _______400________10 ____4____1 __10.00000___0.00000___0.00000   …     …     … ************************************ (_は空白と考えてください.) 全て桁を指定しており,右詰で記入されています. これらをVBで読み込みたいのですが, たとえば1行目を input(No,I & J) と書いても読み込めません. というところまではわかるのですが… 読み込める方法(記述)があれば教えてください!! お願いします!!

  • エクセルファイルからアクセスへ

    初歩の初歩で申し訳ありません。 エクセルのファイルが5つあるとして その中には項目が10個、その項目に それぞれ10行ずつデータがあるとします。 (項目はどのファイルも同じです。) で、それを一つのエクセルのファイルにしたいのですが、 エクセルファイルを全部開かないでアクセスで簡単に出来る方法を教えてください。 なので、50行データが入った1つのファイルに したいのです。 エクセルもアクセスも2000です。よろしくお願いします。

  • 【Access97】取り込みエラー

    【Access97】取り込みエラー txtファイルで保存してあるデータをAccessへ取り込む作業をしています。 項目毎の区切りはカンマ区切(,)になっており、データ内容は「数値」「テキスト」「日付」等各種あります。 txt内の「日付」形式が『d-m-y』なのでAccessのフィールド書式も『日付(M)』にしてあるのですが取り込みエラー(データ型の変換エラー)となってしまいます。 そこで、txtファイルをExcelで開いて[データ-区切り位置]で区切り、書式設定で「日付」を『yyyy/mm/dd』に変更してからAccess(フィールド書式を『日付(S)』に変更)へコピーしています。 <例> txtデータ:01-AUG-10 → Access:2010/08/01 この作業を毎回しているのですが、Excel上ではなくtxt上で直接『d-m-y → yyyy/mm/dd』に変換、もしくは『d-m-y』のままtxtから直接Accessに取り込む方法はありませんか? 尚、データは数千件あり「日付」もバラバラな為”置換”機能だとかなりの時間がかかってしまうので”置換”機能は使っていません。

  • アクセスのフォームで、桁数を指定したい。

    例)「1」の場合でも、3桁の設定で「001」としたい。 エクセルで言うところの書式設定でユーザー定義で桁数を指定できるように、アクセスのフォームで指定できないでしょうか? その数値を最終的にバーコード化したいのですが、その桁数が違ってしまって、表現したいバーコードが再現できないのです。 ちなみにテーブル、クエリでは書式の設定で(表面だけかも知れませんが)表示できています。 どなたかよろしくご教授のほどよろしくお願いします。

  • エクセルでtxtデータを指定の列に取り込みたい。

    エクセル2003を使用しています。 100ファイルくらいの定型フォームのtxtファイルを、エクセルの1シートの中に、同じ項目ごとに入れたいのです。 txtファイルは、ファイル名がyyyymmddhhttss.txtとなります。 ファイル内のデータは お名前: ○○○○(全角漢字) 都道府県: 東京都 郵便番号: 0000000 市区町村: 港区 番地: 番地0-0 アパート・マンション: マンション000号 電話番号: 0000000000 これを、 エクセルのA列には「お名前」、B列には「都道府県」・・・ という感じにセットしたいのです。 自分で、エクセルの1シートにまとめることはできたのですが、 同じ項目ごとに指定列に当てはめることができず、困っております。 どうかよろしくお願いいたします。

  • エクセルの文字列操作の仕方

    ご存じの方がいらっしゃいましたら、教えてください。 今、エクセルの住所リストを固定長のテキストファイルに変換する作業をしています。 このやり方が合ってるのかわかりませんが、各項目のデータを「&」で結んで、ひとりのデータを1行のテキストデータにしようとしています。 というわけで作業をしているんですが、他の項目はうまくいくんですが、電話番号の部分で、指定フォーマット(半角12文字)への変換ができずに行き詰まってしまいました。 どういうことかと言いますと、エクセルの数字を12桁の文字列に統一できないのです。(10桁の数字+2桁の空白という風に) 電話番号のほとんどは10桁ですが、中にはブランクとか携帯の11桁とか、いろいろあります。 件数が多いので、1件1件2桁のブランクを加えるわけにもいきません。 いい方法がありましたら、ご教授お願いいたします。

  • C言語プログラム

    .txtファイルのデータを読み込んで処理するプログラムを作っているのですがやり方がわかりません。 .txtファイルには 1  1.0043  34   744   0.001 7  1.0053  36  733   0.024 4   1.0056  62  621  0.003 . . . と百行くらいのデータがあります。 このデータを読み込んで3行目の2桁の数字だけを取り出す作業ができません。 34 36 62 このようにしたいのですがわかる方教えてください、お願いします。

  • アクセスのLENBとエクセルのLENBの違い

    アクセスで、定められたバイト数以上の文字を削除したいです。 エクセルでのLENBの考えで、やりたいのですが、それがアクセスでは、うまく認識しません。 例えば、 1234567:エクセルでは、10(半角4と全角3×2)          :アクセスでは、14(全てが2バイトにみなされる) アクセスで、全角半角を区別して、桁数を表示させる関数がありましたら教えてください。 以上、よろしくお願いいたします。

  • AccessでExcelデータをインポート

    お世話になります。  Access2003/2010  Excel2003/2010 10年程前より、Access2003で作成したツール(Excel2003形式のファイルを インポート)を利用しております。 Excelファイルは毎日追加/更新しているのですが、先日、とうとうExcel2003 の行の上限である65,536行を超えてしまいました。 今後はExcel2010形式のファイル(行の上限は1,048,546行)とし、かつ、 2010形式のファイルをインポートできるようツールの修正をしなければならなく なりました。 ツールの修正というよりは、今までAccess2003上で使用していたので、そのまま Access2010上で使用したいだけなので、修正が必要がどうかも分からない 状況です。 そこで2点質問ですが、  1.現状インポートする際は、   DoCmd.TransferSpreadsheet acImport, 8, "temp", strFile, True   としておりますが、「8」の箇所は2010形式のExcelをインポートする場合   どのように修正すればよいでしょうか。   ヘルプを見ても8(Excel2000形式)までの記載しかありません。   とりあえず8のままExce2010形式で、かつ2003の行の上限を超えている   ファイルを(66000行)インポートしてみましたが、行は削れることなく   インポートできました。  2.インポート時の文字数制限について   インポートするExcelファイルの「備考」フィールドは文字数が多いのですが、   Access2003上で使用すると全ての文字列(750文字程度)をインポート   できておりました。   しかしAccess2010上で使用すると、文字列が途中で切れる(255文字)   不具合が発生しました   インポートする際は、あらかじめテーブルを作成しておき、そこに対して   Excelのデータをインポートしております。なお、「備考」のデータ型は   メモ型です。   (255文字で切れることから)恐らくAccessがインポートする時点で「備考は   テキスト型」と判断しているから255で切れてしまうのではないか、で、切れた   文字列をメモ型に入れてるだけのように見受けられるのですが。。   2003から仕様が変わってしまったのでしょうか。   上記のことから、インポートするExcelの先頭行の「備考」に、適当な文字列   (750文字)を入力し、それをインポートすると途切れることなくインポート   できました。   ※Accessがメモ型と認識したから? ※いずれもツールをAccess2010上で使用した状況です。 ご教示の程、宜しくお願い致します。

専門家に質問してみよう