• 締切済み

ACCESSで改行コードを削除する方法

アクセスでテーブル内の全セルに入っている改行コードを削除したいのですが、ネット上を検索しても中々解決に至らないので質問させてください。 例えば【http://q.hatena.ne.jp/1156520575】の様なスクリプトは様々な物が検索にヒットするのですが、このコードをVBエディターの標準モジュールに入力した後、どのように実行すればいいのでしょうか。 エクセルであれば分かるのですがアクセスは初めてまだ1ヶ月足らずのため、なかなか理解できません。 クエリを使う方法【http://www.accessclub.jp/bbs3/0038/superbeg15657.html】も参考にしたのですが、この方法は対象とするフィールドが少なければ実効に成功しましたが、私の扱っているテーブル(40以上のフィールドが存在し2万行近いデータがある)では検索結果に何もヒットせず実行できませんでした。 この他にもいろいろな方法を検索し検証してみましたが、やはり解決には至りませんでした。 上記の方法の補足をお願いしたいのですが、他によい方法があれば教えて頂きたいです。 理想はテキストエディタの様に置換で解決できれば簡単で良いのですが^^;どうも無理のようです・・・ 環境は ACCESSバージョン:ACCESS 2002(10.2627.2625) Windowsバージョン:WindowsXP Proffessional Version2002 Service Pack 2 よろしくお願いいたします。

みんなの回答

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.4

ADO,DAO を全く知らなければ、No1さんの回答では辛いでしょうから 比較的、簡単な方法で。 (1)フォーム、新規作成で、元になるテーブルを選択し   オートフォーム:表形式でフォームを作成します。   使い捨てですから、デザインは気にせずに。 (2)デザインビューにして   フォームフッターまたはフォームヘッダーに   ラベルを追加(コマンドボタンのように使いますが、   (フォーカスの関係でラベルにするのがポイントです。)   表示する文字は何でも良い。 (3)ラベルのクリック時のイベントプロシージャに ------------------------------------------------------------- Private Sub ラベル1_Click()   Dim fld As String   Dim pos As Long   Do While True     DoCmd.FindRecord Chr(13) & Chr(10), acAnywhere, False, , False, acAll, False     If Me.ActiveControl.Name = fld And Me.Recordset.AbsolutePosition = pos Then       Exit Do     Else       Me.ActiveControl = Replace(Me.ActiveControl, vbNewLine, "")       fld = Me.ActiveControl.Name       pos = Me.Recordset.AbsolutePosition     End If   Loop   MsgBox "終了しました" End Sub --------------------------------------------------------------   のように。   Private Sub ラベル1_Click()   の「ラベル1」の部分は実際のラベルの名前で。 (4)一応、保存してから、フォームを開き、   1行目の左端のフィールドにカーソルがある状態で   ラベルをクリック。   クリックしても、ボタンと違って見た目は無反応ですが   正常にできれば、終了メッセージが表示されます。

  • t-ka
  • ベストアンサー率28% (14/50)
回答No.3

あーすいませんbugありました。・・英語でテストしてたもので 日本語にすると文字化けします。 ac = Asc(Mid(st, i, 1))の部分を ac = AscW(Mid(st, i, 1)) に変更してください。 どうぞ宜しく!!

  • t-ka
  • ベストアンサー率28% (14/50)
回答No.2

一例ですが変換関数を書いてみました参考にどうぞ。 Public Function mozihennkann(mozi As String) As String 'Sub test() Dim st As String Dim ac As String Dim bc As String Dim i As Integer For i = 1 To 1000 st = CStr(mozi) ac = Asc(Mid(st, i, 1)) If ac = (ac = 13) Or (ac = 10) Then Else bc = bc & ChrW(ac) End If On Error GoTo kill: 'Debug.Print ac Next i kill: 'Debug.Print "結果" & bc mozihennkann = bc End Function

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

SQLを使うとか高等な方法でなく、一番小回りが効く、ADOに戻って考えれば、なんと言うこともない問題では無いでしょうか。 アクセスのモジュールに Sub ADO001() Dim cn As ADODB.Connection Set cn = CurrentProject.Connection MsgBox cn.Version strPass = CurrentProject.Path strname = CurrentProject.Name MsgBox strPass & "\" & strname Set rs = New ADODB.Recordset rs.Open "社員2", cn fn = rs.Fields.Count Do Until rs.EOF   ' MsgBox rs!氏名 & "-" & rs!住所 & "-" & rs!電話番号 For i = 0 To fn - 1 MsgBox Nz(rs.Fields(i)) Next rs.MoveNext Loop rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub を張り付け 例データ テーブル名 社員2 ID 氏名 住所 電話番号 重複 1 山田 三郎 東京都大田区 03-2345-6543 a 2 大島 義男 東京都品川区 042-2345-2345 3 下田 茂 仙台市青葉区 0720-34-3456 a 4 小出 健二 名古屋市緑区 042-345-2345 5 中田 卓 福岡市北区 07523-23456 a に対し実行すると、全てフィールド(フィールド数は上記例にある)はを捉えられました。 後は、Mgboxの行に 各フィールドで、削除のためのReplceを行い、Edit、Updateでレコードを更新すれば良いのでは。処理時間はかかるかも知れないが。 ーー ADOが初耳なら http://www.accessclub.jp/ado/ など読んでください。

関連するQ&A

  • ACCESSでの改行コード

    ACCESSでの改行コードの入力方法を確認させてください。 ACCESSのテーブルにテキスト型のフィールドを用意し、一つのフィールドに改行が入ったデータを入力したいと考えています。 以下の方法を試してみましたが、改行コードが入っていないように思えます。 1.エクセルで一つのセルで、ALT+ENTERで文字列を入力し、テーブルにデータをインポート。 2.上記エクセルのデータをCSVで保存したものをテーブルにインポート。 これら2つのデータをテーブルで確認すると、改行はされていないですし、テーブルのデータをエクスポートしたものも改行はされていませんでした。 フィールドの設定で何か必要なんでしょうか? それとも、テキスト型のフィールドには改行コードを持てないんでしょうか?

  • 改行コード

    アクセス2000で作成したテーブルをCSVにはきだしているのですが、あるフィールドのデータに改行コードが入っています。 クエリで、フィールド内のデータの改行コードを省くということは出来るのでしょうか?

  • アクセス2013のフォーム上のコードを抜き出す

    アクセス2013でゴリゴリに作られた画面があります。 その中のコードをテキストに抜き出すことは可能でしょうか? あるテーブルを記述している部分をすべて検索したいのですが、 モジュール配下にあるものはヒットしますが、 フォーム内のComboBoxのRowSouceなどに書かれているコードにはヒットしません。 フォーム内のコードをテキストで抜き出すことはできませんか?

  • エクセル→アクセスのコピペで切り捨てられてしまう

    アクセス初心者です。アクセスのバージョンはoffice365です。 アクセスのテーブルをエクセルにコピペして加工し、加工したものを再度アクセスのテーブルに貼り付けるという処理をしています。 あるフィールドが、アクセス→エクセルはうまくいきますが、エクセル→アクセスで255文字でデータが切り捨てられてしまいます。 フィールドのデータ型は「長いテキスト」ですので、検索したところ、64,000 文字までは入るようです。 もともとアクセスで入力をしていて、そのフィールドには255文字以上のデータも入っています。 エクセルへのコピペはうまくいくのに、なぜアクセスに戻す時に切り捨てられてしまうのでしょうか? どうすれば解決できますか?

  • Access2003で特定列の改行コードを削除してCSVへエクスポート

    またまた、質問させていただきます^^; Access2003にてCSVデータを一旦インポートして、クエリなどを使いデータを編集し、別のテーブルへ追加クエリを使用して吐き出し、そのテーブルのデータ全てをCSVファイルへエクスポートする、といった処理をしております。 はじめに取り込むCSVデータが、セル内(エクセルの編集画面でたとえさせていただきます)で沢山改行されているデータで、それをアクセスに取り込むと改行は一旦なくなったように、見えるのですが、エクスポートするとやはり改行コードが着いたままエクスポートされます。 この改行コードをAccessの処理で削除したいのですが出来るのでしょうか?CSV内の改行全てを削除するのではなく、特定列内(例えばC列など)のセル内の改行コードのみの削除です。 エクセルのClean関数なども試しましたがAccessの処理で一括してしまいたいのです。 TeraPad、秀丸などのテキストエディタで改行コードの置換をすると全て消えてしまい、CSVの行を意味する改行コードまで消えてしまうので使えないし。。。 皆様、お知恵をおかし下さい!お願いします。

  • ACCESSのテーブルで「&」を使いたい

    ACCESSのテーブルで、複数のフィールドを&でつなげて、一つのフィールドを作りたいです。 例えば、 一つのテーブル内で「コード」と「品番」のフィールドがあり、 つなげた「コード品番」というフィールドを作りたいのです。 クエリでは規定値に [コード]&[品番]と入れて「コード品番」とフィールドを作ることができました。 それをテーブル内ではできないのでしょうか? よろしくお願いします。

  • アクセスのクエリでレコード削除ができません。

    アクセス超初心者です。 テーブルを商品コードでくっつけて、クエリのデザインビューで表示しました。 いらないレコードを削除しようとしたところ、できません。 くっつける前の、テーブルではできますが、クエリで実行させ、レコードを削除しようとしたところできません。 どうしたらよいのか教えてください。 あと、もうひとつ、クエリで、出力したいフィールド名をドラッグしたあと、削除したいときには、どうすればよいでしょうか? 表示しないなら、できるのですが・・・。削除がわかりません。 よろしくお願いいたします。

  • ACCESSで在庫管理

    ACCESS初心者です。 ACCESSで在庫管理をしようと思っています。 対象となる物品には複数のフィールドを持たせています。 (受領日・品名など、または返却日・品名など。) 簡単のため、品名ごとの数量は固定(仮に1固定)とします。 受領テーブルと返却テーブルを作り、[受領テーブル]のレコードから[返却テーブル]のレコードを引けば[在庫テーブル]ができるのではないかと、ACCESSの機能をよく知らないままイメージしています。 具体的な方法をご存知の方いらっしゃいましたらご教授願いたくお願い致します。 VersionはAccess2003でやりたいのですが、Access2010でもいいです。 宜しくお願いします。

  • Excelで改行が含まれたフィールドをcsvに変換する際改行を取る方法を教えてください

    ExcelをCSVファイルにする必要があり、レコードの形式を "aaa","bbb","ccc"改行コード にしたいいと考えております。(それぞれのフィールドに改行コードは不可) Excelファイル時に、改行を置換(Ctrl+JをNULLで置換)しCSVで保存しエディタで見ると改行が残っています。(CR-LFがCRに置換されているため) 使用しているエディタはEmエディタです。 Accessでインポートしたのちtxtでエクスポートしても結果は一緒でした。 フィールド内の改行だけを取る方法はありますでしょうか。

  • Accessのリレーションシップ

    Access初心者です。 Access2010でデータベースを作っていて、行き詰ってしまいました。 テーブル1にフィールドABCDEFがあって、Aに主キーが付いています。(Aはテキスト型でフィールドサイズ10です。) テーブル2にはフィールドAGHがあり、Aに主キーが付いてます。(Aはテーブル1と同じです。) テーブル3にも同じくフィールドAIJがあり、Aに主キーが付いています。(Aはテーブル1と同じです。) テーブル1のフィールドAを主テーブルとし、テーブル2・3のフィールドAにリレーションを組んでいます。 この時のリレーションシップで参照整合性と連鎖更新と連鎖削除にチェックを入れ、種類が一対一になりました。 その後、テーブル1でレコードを追加しようとすると、「テーブル'2'にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことができません。」と出ます。 これを解決する方法はどうするのか、お教えお願いします。 分かりにくい説明ですいません。

専門家に質問してみよう