• ベストアンサー

Access(アクセス)での文字列の置換について

商品データベースをCSVでダウンロードし、一括で変更しようとしています。 Excelでは1つのセルに911文字以上のテキストが入っていると置換ができないようなんですが、アクセスではどうなのでしょう。 ちなみに、置換したいフィールドにはhtmlが入っていて、1000文字を超すフィールドもたくさんあります。 また、Excelはバージョンによって、ダブルクォーテーションを含むCSVデータ(htmlなど)は上手く1フィールドとして認識できないようです。アクセスもそのような不具合があるのかも教えていただきたいです。 よろしくお願いします。

  • ao_
  • お礼率59% (112/189)

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.4

No.2,3です。 > 置換したい文字列は特定のフィールド内の文字列で、それ以外のフィールドで > 仮に同じ文字列が存在しても、そこは変更してほしくなかった なるほど、それだと確かに、一律で変換してしまうNotPadなどでは無理そうですね。 > Accessでは、レコードの移動は可能でしょうか。 > 例えば、5行目のレコード(行)を1行目に移動するといったような。 csvファイルなどをAccessに取り込んだ場合、「レコードの並び順は基本的に 保持されない」と考えておいた方が無難です。 また、Excelでの「行の切り取り→切り取ったセルの挿入」のような操作も できません。 ただ、通し番号に相当するフィールドとデータを予め用意しておけば、 その通し番号で並べ替えを行うことで、「並び順の再現」は可能です。 また、同様に通し番号を書き換えた上で並べ替えを行うことで、 「レコードの切り取り・挿入」と実質的に同じ結果を得ることができます。 例えば、 > 5行目のレコード(行)を1行目に移動 といった場合は、通し番号のフィールド名を「ID」とすると、  1)「ID=5」のレコードのIDを、一時的に「0」(→適当な空き番号)に書き換え  2)「ID=0」以外の全てのIDに「1」を加算  3)「ID=0」のIDを「1」に書き換え という操作をした上で、IDで並べ替えてやる、といった具合です。 この書き換え・加算といった操作は、更新クエリというものを使えば、 Access上で簡単にできます。 (レコード1件ずつ、手入力でIDに1を加算していく、という必要はありません)  *入れ替える必要のあるものがいくつもあるようだと、変換後に出力した   csvを、Excelで処理してしまった方が速いかもしれません。   (その辺りは、臨機応変に、ということで・・・)

ao_
質問者

お礼

なるほど! IDを使った並べ替え了解です。 ありがとうございます。 本当に分かりやす回答ありがとうございました。

その他の回答 (3)

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

No.2です。 > >フィールドサイズが「メモ型」 > というのは、どういう意味でしょう。 Accessの場合は、Excelの列に相当するもの(フィールド)に対して、 予めどのようなデータを保存できるようにするかを決めます。 (例えば、通し番号なら長整数型、日付なら日付/時刻型、一般的な  文字ならテキスト型、など) *私自身はまだ試していませんが、最新のAccess2007では、この辺りを  (あまり)考えなくてもデータベースが作れるようになっているらしいです* で、htmlの記録先の設定としてあり得るもの、及びその主な特徴は  ・テキスト型;    入力された値にインデックスが設定できる(下の二つでは設定不可)    (完全一致・先頭一致の検索が速くなる)  ・メモ型;    テキスト型よりも多くの文字数を記録できる  ・ハイパーリンク型;    記録された値をクリックすることでハイパーリンク先にジャンプできる    (上の2つでは、あくまで文字の羅列として扱われるだけ) といったところです。 今回のご質問では、主目的が「文字列の変換」とのことですので、 サイズを優先して「メモ型」を選択すればよいでしょう。 (実際には、インポートするためのウィザードを起動すると、最初の幾つかの  データがサンプリングされて、適当なデータ型が設定されるので、  それに任せれば大丈夫だと思います) > 置換をした後に、CSVでエクスポートしたいのですが、フィールド名(一行目の > 項目名)もそのCSVに出力されるでしょうか。 まだAccessをお持ちでないとのことなので、操作の詳細な説明は省きますが、 インポートの際には、1行目の項目をフィールド名とするかどうかを選択できます。 (つまり、元のcsvの1行目が、データではなくフィールド名として取り込める) エクスポートの際にはそのフィールド名を出力することができますので、 特に問題はないものと思います。 ・・・ただ、Accessの購入を検討中ということを聞いて思ったのですが、今回の変換は、 Windowsに付属しているNotePadまたはWordPadでの変換(これもCtrl+H)では 無理なのでしょうか? (htmlには実質触れたことがないので、具体的にどんな変換をされようとしているのかが  わかっていないのですが(汗)) もしかしたら、Accessに限定せずに、「テキストの変換」として再質問されれば、 もっと適切な方法のアドバイスがもらえるかもしれません。 ・・・以上、長くなりましたが、参考になりましたなら幸いです。

ao_
質問者

補足

すごくわかりやすい回答ありがとうございます。 自分が心配していたことはほとんど問題ないようです。 >NotePadまたはWordPadでの変換(これもCtrl+H)では 無理なのでしょうか? 自分も試みました。 が、置換したい文字列は特定のフィールド内の文字列で、それ以外のフィールドで仮に同じ文字列が存在しても、そこは変更してほしくなかったのです。実際に複数のフィールドに同じ置換え対象文字列が存在します。 なので、フィールドを限定して特定の文字列を置換えるために、ExcelかAccessが必要だと思いました。 もうひとつお聞きしたいのですが、 Accessでは、レコードの移動は可能でしょうか。 例えば、5行目のレコード(行)を1行目に移動するといったような。 次から次に質問してしまって申し訳ありません。 DexMachinaさんの回答はとてもわかりやすいので、、、

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

Accessのテーブルのフィールドサイズが「メモ型」なら、65,535文字まで 入力可能です。 (最大サイズが小さいのは「テキスト型」) こちらの環境にてAccessで新規テーブルを作成し、1フィールド1万文字の レコードを1件だけ入れて変換(Ctrl+Hキー)してみましたが、問題なく 動作しました。 但し、ExcelとAccessでは「Ctrl+H」で呼び出すダイアログの使い勝手が 違うので、注意して下さい。 一部の文字列の一致を見る場合、 Excelでは「セル内容が完全に同一であるものを検索する」のチェックが初期 状態で外れている)ので、置換前後の文字列を入力するだけでOKですが、 Accessでは「検索条件(H)」を、既定の「フィールド全体」から「フィールドの 一部分」に変更する必要があります。 (「フィールド全体」は、Excelで上記「セル内容が~」のチェックをオンにした時と  同様の、完全一致検索を行う場合に使用します)

ao_
質問者

補足

テストまでしていただいて、ありがとうございます。 実はこの置換ができるならAccessを購入しようという状態です。 が、もうひとつ気になることができました。 >フィールドサイズが「メモ型」 というのは、どういう意味でしょう。 中に入力するのはhtmlなんですが、何か問題はあるでしょうか。 また、置換をした後に、CSVでエクスポートしたいのですが、フィールド名(一行目の項目名)もそのCSVに出力されるでしょうか。 よろしくお願いいたします。

  • masa1to1
  • ベストアンサー率20% (1/5)
回答No.1

ACCESSのことで知っているところだけですが・・・ Accessのフィールド形式が「メモ型」ですと 半角で255文字までしか入りません。 ほかのフィールド形式はもっと少なく制限もあったはずです。 (詳しくはヘルプを見てください) ひとつのフィールドにあまり文字数を多くしないほうがよいかと。 レコード数が多くなると動作が鈍くなるんじゃないでしょうか? PCの負荷もかかるし。 置換の意味がよくわからないです。 多分AccessにCSVデータをインポートすることだと思いますが 商品データーベースからAccessへデータ置換? Accessもデータベースでは? 今あるデータベースからAccessに変える必要はあるの? 専門家ではないし、やりたいことの詳しいことがわからないので いいアドバイスできず、申し訳ありませんがうまいくいくといいですね。

ao_
質問者

補足

早々にありがとうございます。 また、説明が足らず申し訳ありません。 置換は、文字の検索と置換のことです。 あるフィ-ルドにはhtmlソースが入力されています。 そのhtmlソースの特定の部分を、一気に変更するのが希望です。 例: <p style="width:500px; text-align:right;"><a href="h… ↓↓↓↓↓↓↓ <p style="width:400px; text-align:left;"><a href="h… 商品データベースは、ASPから取得したCSVです。 もちろん、ASPの管理画面から1箇所ずつ修正して、画面を切り替えてまた修正するというのは可能なんですが、途方も無い時間を要します。なので、そのデータをCSVで取得し、(正確にはCSVでしか取得できません)一気に修正しようと思いました。が、Excelでは無理でした。 フィールドの文字数はできるだけ少なくしたいのですが、大切な情報を表示する部分でもあり、どうしても減らせませんでした。 いただいた回答からすると、最大でも半角255文字しか使えないと理解していいでしょうか。だとするとアクセスは本末転倒です。。。

関連するQ&A

  • 文字列の置換について。

    ダブルコーテーションで囲まれ文字列が あったとします。 その文字列の中に含まれる半角カンマを なくしたいのですが、 リプレイスだと反応がありません。 その他の文字は置換出来るのですが。 どなたから、ダブルコーテーションに囲まれた 文字列の中の半角カンマを取り除く方法が ありましたらアドバイス下さい。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • EXCELでの置換でコーテーションを残す方法

    どなたか教えて下さい。 EXCELの置換(「編集」-「置換」)で文字列の置換は出来るのですが、 ” :ダブルコーテーション から ’ :シングルコーテーション に置換したいのですが、その場合、セルの先頭のシングルコーテーションが文字列の始まりと捕らえられ消えてしまいます。 これをそのまま残す方法はありますか?

  • 文字列に含まれているダブルクォーテーション( ")を置換する

    文字列に含まれているダブルクォーテーションを除きたいのですが、これをSubstitute関数で置換しようとしてもうまくいきません。ダブルクォーテーションが文字列を指定するために使われるせいだと思うのですが、"を文字列として指定する方法はあるのでしょうか? よろしくお願いします。

  • < >を含む文字列のエクセルでの置換について

    < >を含む文字列のエクセルでの置換についておしえてください。 < や >を含むhtmlの文字列のSUBSTITUTE置換で悩んでいます。 < や >は数式の大なり、小なりと認識されるので置換ができないということですよね? これを置換するいい方法はないのでしょうか? たとえばhtmlテキストに含まれる<table width="800">という文字を <table width="600"><h1>時計</h1>に置き換えたいというような感じです。 エクセルに詳しくないもので出来るのかどうかよくわかりませんが とても困っているので教えていただけましたら助かります(>_<) よろしくお願いいたします。

  • エクセル 置換後の文字列について

    エクセル2003です 置換後の文字列について質問させてください 特定のセルに文字を入力し 例 C100に(9月)等 検索と置換にて 置換後の文字列を C100のテキストに 置換したいのですが 入力時にC100を選択する方法がわかりません  よろしくお願い致します

  • AccessのデータをVBを使って置換する

    (1)VisualBasic6.0を用いて、Access2000のデータベースに接続します。 (2)データベースの中のテーブル(テーブル名:T-カレンダー)にあるフィールド(フィールド名:コード)に保存されているデータの一部分を置換したい。(⇒途中のアルファベットを変更したい。)(例;置換前:123FFF789 置換後:123III789)  テーブルを直接開いて、フィールドにカーソルをあわせて、”編集メニュー”の『検索と置換』から行っても出来るのですが、Accessを触らないでVBから作ったフォームから変更(置換)をさせたい。  ◇フォームに2つテキストボックスを作って、「検索する文字列」と「置換後の文字列」を入力し、『変換』ボタンを押したら、データが置換される、という流れ。   一回きりの置換でなくて、何回でも同じフィールド内のデータを置換したい。   SQLのREPLACE関数を用いて出来るかな、とは思っているのですが、どのように作成すればよろしいのでしょうか。  また他のやり方でシンプルな方法があればお教えください。

  • ACCESS2000でマクロでCSVエクスポート

    ACCESS2000でマクロでCSVでエクスポートしたいのですが、テキスト文字がダブルコーテーションで囲まれてしまいます。このダブルコーテーションを使用せずに、マクロでエクスポートしたいのですが、ウイザードを使わないとできないのでしょうか。 宜しくお願いいたします。

  • Excelに、ダブルクォーテーションで始まる文字列を貼り付けると、ダブルクォーテーションが消えること

    Excelで、ダブルクォーテーションで始まる文字列をセルに貼り付けたときに ダブルクォーテーションが消えるのですが、 Excelってもともと(標凖的な動作として)そういうものですか。 (F2キーを押すなりして)編集状態にして貼り付ければ、ダブルクォーテーションのついたまま貼り付くのですが、 私はセルを選択して貼り付けただけでも大丈夫だと思っていました。 「文字列を貼り付ける」というのは、例えばテキストエディタ上にあるものを手作業でコピーして貼り付ける、ということです。 「ダブルクォーテーションで始まる文字列」と言っても、 ダブルクォーテーションが3つ以上あったときに消えるのは、最初の1組(2つ)ですね。 しかし、 "AAAA"""BBBB のような場合には、なぜか AAAA"BBBB になるのです。 (ちなみに、この文字列を、質問直前の質問内容確認の画面(IE)でコピーしてExcelに貼り付けたときは、違います。) どのような規則に基づいてダブルクォーテーションが消えるのかも疑問です。 このような仕様になっている理由はなんでしょうか。 また、Excelに文字列を貼り付けるという操作を頻繁に行うため、 できれば、編集状態にしなくても、 セルを選択して貼り付けするだけで、そのままダブルクォーテーションも貼り付いてほしいのですが、 そのためにはどうすればよいのでしょうか。 「セルの書式設定」で、表示形式を文字列にすればよいと思ったのですが、だめでした。 セルには文字列を入れるだけで、数式を入れたりしません。 (数式としては扱ってほしくない、という意味です。) Excelは2000です。

  • シングルコーテーションをダブルコーテーションに置換

    エクセルで シングルコーテーションを ダブルコーテーションに置換することは出来ないのですか? セルに「'aaa」がはいってるのですが これを「''aaa」にする方法を教えてください。 置換だとなぜかできません。

  • 文字列一括置換ソフトを探してます

    文字列一括置換ソフトを探してます・・・って書くと、Vectorに行けばいっぱいあると言われそうですが、ちょっと条件が特殊です。 ・複数(多分500~1000個)のテキストファイルの指定文字列を一括置換したい(ここまでは普通) ・対象の文字列の置換パターンが3万件(苦笑) ワイルドカードなどではなく、3万の単語を別の3万の単語に置換したいのです。 (プログラムの変数を、ネーミングルールを変えたために総入れ替えする・・・と考えて頂ければ分かっていただけるでしょうか) 10件くらいのパターンを連続して置換するソフトは見つかったのですが、3万件となると・・・。 (そもそも3万件のリストをよく作ったもんだ) UNIXにsedというコマンドがあるというのは聞いたことがあるのですが、Windows(&DOS)しか触ったことがないので、どうすれば良いのか分かりません(私はプログラマじゃありません)。 なお、同じネタでエクセルのワークシートのセルを置換する必要があるのですが、こちらは自作マクロで対応しています。 もし適当なソフトが見つからなければ、エクセルマクロの作成を検討しています。 (マクロでテキストファイルの読み込みはやったことがあるのですが、書き出しは多分やったことがない) 置換リストはエクセルで作成しているので、リストはソフトに応じた形式で準備できると思います。 以上、よろしくお願いいたします。