• ベストアンサー

OSの種類やバージョンの違いおける改行コードの扱いかた

過去に似たような質問がありましたが、解決出来ませんでしたので、質問をあげさせて頂きます。今VBAを利用してアクセスのデータをエクセルにエクスポートしています。エクスポート自体はうまくいっているのですが、アクセスのフォーム画面で改行(enter)したところが、うまくエクセルの方で表示せず、どうしても文字化けして「・」になったり、文章の一部がかってに消えていたりしてうまくいきません。さらに、WINDOWS98とWINDOWS2000のPC両方でこのシステムを利用したいのですが、98と2000でエクセルの表示状況が違います。得に98の場合は、文字が消えたりが多く発生します。処理の手順ですが、アクセスのフォーム上の値を変数に代入し、そのときにアクセスの改行(vbCrLf)を(Chr(10))にReplace関数を利用して変えてから代入しています。 ==== 関数部分 ==== Function Tyosetu(In_Data As String) As String Tyosetu = Replace(In_Data, vbCrLf, Chr(10)) End Function エクセルのセルには【折り返して表示する】にチェックを入れています。何か対処法があればご教授ください。お願いします。

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

  • ベストアンサー
  • jmh
  • ベストアンサー率23% (71/304)
回答No.3

> テキストボックス内での改行部分のコードだと… > エクセルで「=CODE(MID(A1,5,1))」などとして、A1の5文字目のコードを調べたりできます。 「何が何に変わってしまうのかが分かれば、ナンとかなるんじゃないかなぁ」という意味です。

simple-t
質問者

お礼

お返事ありがとうございますM(vv)M 一度試してみたのですが、うまくコードが調べられませんでしたので、もう一度試してみたいと思います。また確認できたら補足させて頂きますので、よろしければアドバイスお願い致します。

simple-t
質問者

補足

分かりにくい質問にいろいろとお答え頂きありがとうございましたM(__)M 取り合えずchr(13)+chr(10)をchr(10)に変換し、あと半角のカタカナも文字化けの原因になっているような感じだったので、VBAで半角を全角に変換してからエクセルにエクスポートするという処理で何とか今の所は対応が出来たような感じです。ありがとうございました。

その他の回答 (2)

  • jmh
  • ベストアンサー率23% (71/304)
回答No.2

こんばんは。 エクセルの「・」が何者(文字コード?)なのかを教えてください。そのときの Tyosetu() の戻りを Asc() に通して教えてください。

simple-t
質問者

補足

返事が遅くなり大変申し訳ございませんM(vv)M 「・」の正体はアクセスのフォーム内に作成したテキストボックス内での改行部分のコードだと思います。「vbCrLf」を「Chr(10)」にTyosetu()で変更しエクセルのセル内で表示の際に改行するようにしています。これは過去の質問でアクセスでの改行のコードとエクセルでの改行コードが違うとの事だったので変更しています。 Tyosetu = Replace(In_Data, vbCrLf, Chr(10)) で文章内の改行のコード部分だけを置き換えて変数に代入しエクセルにエクスポートするという感じです。Asc()に通してのコードは今確認中です。すいません。

noname#25358
noname#25358
回答No.1

 Windows 系のOSは全て vbCrLf で統一されています。  どうしても CR もしくは LF でなければ認識しないとしたら、それはOSレベルではなく、アプリケーションレベルでの差です。

simple-t
質問者

お礼

回答ありがとうございました。問題は改行だけではなく、半角文字等も影響していたようです。

関連するQ&A

  • ACCESSでの改行コード

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

  • VBAプログラミング 改行について

    教えてください。 下記のような改行をさせる関数を作成しました。 そのこの関数を読み込みさせ、データをあるセルに貼り付けるように指示したのですが、うまくいきません。デバックをすると、値は取得できているのですが、セルの貼り付けがおもうようにいきません。 セルが結合セルだからだめなのでしょうか?? 値は#VALUEになります お知恵をお借りできませんか? エクセルには下記のように記入しています。 =kaigyou("ああああ\nあああああああ") **************************************************** Function kaigyou(a) Dim b As String 'Excelのファイル名を変更の場合は↓これも変更して! Const file_name = "test.xls" 'シート名を変更の場合は↓これも変更して! Const print_sheet = "Sheet1" '特典内容の改行 b = Replace(a, "#n", vbCrLf) Workbooks(file_name).Worksheets(print_sheet).Cells(4, 25).Value = b End Function **********************************

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

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

  • Excel2000でのVBAでの改行の置換方法

    Excel2000でVBAを利用しています。 Dim buf As string buf = "あいうえお" buf = Replace(buf, Chr(10), Chr(13) & Chr(10)) Excel2007では上記のプログラムで「あいうえお」の間に入っている、 改行コード\nを\r\nに置換することができたのですが、 Excel2000では上記のコマンドで置換ができませんでした。 なんでも良いので、何か助言頂けると嬉しいです。 答えでもなくても良いのでなんでも思いついた事をお願い致します。

  • VBAでテキストファイルに書き出し時の改行方法

    Excel VBAでテキストファイルに書き出しをしたいと思っています。テキスト内で改行を指定したいと思うのですが、どのようにやったらよいでしょうか? Dim str As String str = "ABC" & vbCrLf str = str & "DEF" & vbCrLf とやってもうまくいきません。何が悪いと考えられるでしょうか?

  • EXCELのフォームで改行ができない

     EXCELのフォームで改行したいのですが、次のコードで改行しようとしています。  au = "手伝う" & vbCrLf & "手伝う"  TextBox1 = au でテキストボックスに       手伝う       手伝う と表示されて欲しいのですが改行が文字として表示されてしまい改行されません。何故なのでしょうか?テキストボックスのプロパティの問題でしょうか?    

  • Excel97 VBA とVBSのsplit関数

    新しい職場で、Excel VBAでデータを取り込み、それを改行文字ごとにsplit関数で区切って配列に入れようとしました。 arr=split(文字列,vbcrlf) って感じでですね。しかし、なんとその職場のExcelのバージョンが97のため、VBAでsplit関数が使えず、この意図が実現できませんでした。そのため、ネットで調べてVBScriptのsplit関数を流用しようとしたのですが、「終了していない文字列型の定数です。」とエラーが出てしまいます。ソースは次のとおりなのですが、どう直せばいいでしょうか。改行文字で区切るのでなく、カンマなどで区切るのなら、上手く出来るのですが・・・。 Sub sample() Dim vs As Object Dim rtn As Variant Dim q As String Dim buf As String q = Chr$(34) 'ダブルクォーテーション Set vs = CreateObject("ScriptControl") vs.Language = "VBScript" 'Excel97のVBAにはsplit関数がないのでVBSからsplitを流用 buf = "1" & vbCrLf & "2" & vbCrLf & "3" '改行で区切った文字。実際は、もっと複雑な文字を取り込みます。 rtn = vs.Eval("split(" & q & buf & q & ", vbCrLf)") 'Excel97のVBAにはsplit関数がないのでVBSからsplitを流用 Debug.Print rtn(1) 'ここで「終了していない文字列型の定数です。」エラーが出る End Sub

  • エクセルでCRLF(改行)コードが「・」で表示される

    見積りデータ(アクセス)をエクセルにエクスポートして使用しているのですが、 その中のデータに改行コード(CRLF)が含まれている物があります。 エクスポートされたエクセルファイルを開くと パソコンによってCRLFが「・」で表示されたり、何も表示されなかったりします。  ※同じファイルを開いてもパソコンよって表示が異なっています。 CRLFがあっても何も表示しない様にしたいのですが 対応方法を教えてください。 上記の2台の差ですが 「・」表示されるPCのOSはWin2000で CRLFが何も表示されないPCのOSはXPくらいです。 共通部分は Office2000(EXCEL2000) PCはDELLのDimension4100 以上、お願いします。

  • 改行コードの判定に関して

    環境:Visual Basic 2008 教えて下さい。 EXCELからデータを読み込み、データベースに格納するようなプログラムを 作成していますが、そのEXCELデータの中に、改行コードが含まれているデータ が存在する為、取り込み時点で、削除してから取り込もうと考えています。 その為、以下のような記述をしましたが、改行コードがない場合でもあると認識 してしまいます。 正しい記述はどのようにすれば良いでしょうか? 《記述内容》 Dim B_SearchChar As String = vbLf B_dp = IN_名称.IndexOf(B_SearchChar) ↑ この記述で改行コードがあると認識できる? B_dp >= 0 であった場合処理をする。    よろしくお願いします。

  • ACCESSの改行

    ACCESS2000を使用しています。 エクセルのシートを 同一セル内に2行以上入力してあるものがあり、エクセルでは書式の折り返して表示していますが、アクセスにインポートしフォームで表示したところ、改行がエクセルのシートと同じにならず、テキストボックスの幅で改行されてしまいます。 エクセルのシートと同じ用にフォームで表示させたいのですが、どうすればいよいでしょうか? 例 セルA ------------ |AAA | |222 | ------------