• 締切済み

EXCEL2000 VBA CSVファイルの読み込み

エクセル2000です。 VBAでCSVファイルを読み込もうとしているのですが、CSVファイルの一部に改行コード[*]が入っています。 そのまま読み込んだ場合、エクセルの中では改行されません。CSVファイル(文字列)を精査していって、[*]があれば、VBでの改行コードChr(10)に変換する方法でいけるのでしょうか。 Workbooks.Open   Filename:="C:\temp\sample.csv" Range("A2:J901").Select このsample.csvの中身を変換したいのですが。 よろしくお願いします。

みんなの回答

noname#11856
noname#11856
回答No.3

#2です。。。ごめんなさい。(>_<) 全然意味のないモノになってます。申し訳ございません。 何を考えてるやら・・・>私。(涙) 頭冷やしてきます。。。(T-T)

noname#11856
noname#11856
回答No.2

Workbooks.Openではなく、読み込みながら処理をするほうがいいように思います。 Open関数でファイルを開き、Input等で読み込みます。 読み込んだ内容中に改行コード(*(アスタリスク)が入ってるんですか?)があれば置き換える。 例えば・・・ Dim intFno As Integer Dim strBuff As String Dim lngRow As Long intFno = FreeFile() Open ファイル名 For Input Access Read As intFno lngRow = 1 Do Until EOF(intFno) Line Input #intFno, strBuff Cells(lngRow, 1) = Replace(strBuff, "*", vbCrLf) lngRow = lngRow + 1 Loop Close intFno とか。 #検証してないというか、いきなりここで書いただけなので間違ってるかも知れないけど(^-^;、こんな感じで。。。

kyrie_esumi
質問者

お礼

あ、締め切ろうとした間にご回答いただき、ありがとうございました。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 Replace関数で出来ます。 詳細はヘルプなどを参照して下さい。

kyrie_esumi
質問者

補足

回答ありがとうございます。 SEARCH関数で値を探してそれをreplaceで変換させればいい理論はわかるのですが、ヘルプなど見ても、特定のセルを変換する方法は書いてありますがそれをファイル全体に行う記述が書いてない為に停止してます。

関連するQ&A

  • エクセルVBAで65536レコードを超えるCSVファイルの読み込み

    エクセル2000です。 現在CSV形式のファイルをもらい、エクセルVBAで1行づつエクセルに取り込み、加工しています。(CODEは、かなり省略していますが下記の通り) データは将来的には何万件におよぶことも考えられます。 ためしに65536を超えるデータを読み込ませたところ65536を超えたところでやはりエラーになりました。Workbooks.Openでエクセル形式で開いているので65536を超える部分は無視されるからだと思います。 このような場合には、どうやってCSVファイルからデータを読み込めばよいのでしょうか?(なお、エクセルは当分2007にはなりそうもありません。アクセスはまったく使えません。) Sub TEST01() Set cf = Workbooks.Open(Filename:=ThisWorkbook.Path & "\test.csv") Set zerro = cf.Sheets(1).Range("A1:AX1") ThisWorkbook.Sheets("Sheet1").Activate Do Until zerro.Cells(1).Value = "" ThisWorkbook.Sheets("Sheet1").Range("A1:AX1").Value = zerro.Value '処理マクロ省略 Set zerro = zerro.Offset(1) Loop End Sub

  • excel 2003でCSVファイルを読み込むVBA

    現在CSVファイルを読み込むマクロを作成してますが、レベルが低く下記載のコードで作業を行ってます。 皆様の技術をお借りしたいので、ご教授宜しくお願い致します。 ※現在のコードです。 CommandButton1でフォルダーを開いてcsvファイルを選択し、toolをsheetに追加してます。それから、CommandButton3で追加されたtoolからB14:C14)を選択し最終行までコピーしSheet1の(B12)に数値のみを貼り付けています。 結構手間が係り作業に時間がかかってしまいます。 そこで、改良をしたいと思いますのでご教授お願い致します。 ※改良したいポイント (1)同じフォルダー内のTOOL.CSVをフォルダーを開かず直接commandButton1でSheetに追加する。 (2)Sheet2にコピーされたデーターから(B14:C14)を選択し最終行までコピーしSheet1の(B12)に数値のみを貼り付ける。 (commandButton3はなくしたいと思ってます) 以上です。 宜しくお願い致します。 --------------------------------------------------------- Private Sub CommandButton1_Click() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Myname = ActiveWorkbook.Name CSV_Filename = Application.GetOpenFilename("CSVファイル(*.CSV;*.prn),*.CSV;*.prn", , "CSVファイルを開く") If CSV_Filename = False Then Exit Sub Workbooks.Open CSV_Filename CSV_SheetName = Worksheets(1).Name Sheets(CSV_SheetName).Move after:=Workbooks(Myname).Sheets(Sheets.Count + 1) Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub ---------------------------------------------------------------- Private Sub CommandButton3_Click() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Sheets("(TOOL)").Select Sheets("(TOOL)").Range("B14:C14").Select Sheets("(TOOL)").Range(Selection, Selection.End(xlDown)).Select Selection.copy Sheets("CSV Road").Select Sheets("CSV Road").Range("B12").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub -------------------------------------------------------------

  • エクセルファイル(book)のシートの内容をCSVファイルにおとしたい

    こんにちは。 VB初心者です。 実はVBではなく、Excel VBAで行なっているのですが。 ここに質問していいかもよく分かってないのですが。 プログラムの処理としては、あるBookのシートの内容を 別のCSVファイルとして生成したいのです。マクロを組んだのですが、一つ問題があって困っています。 問題: 生成したCSVファイルが一度Window上に表示されて (それはいいのですが、あとで閉じますから) 以下の確認メッセージがでてしまいます。 「outFile.csvはExcel97のファイル形式では、ありません。変更を保存しますか?」 要はプログラムがここで、一旦ユーザアクションを要求してしまうのです。 アクションなしに普通に終了させたいのですが。 マクロではなくVBだったらこんなことはならないのでしょうか? 初心なのでよく分かりません。 もしくはもっとほかの簡単なコードできるのでしょうか。 以下にコードを記述します。 Sub OutFile() Dim myWBpath As String myWBpath = ActiveWorkbook.Path Workbooks.Open FileName:=myWBpath & "\testData1.xls" Sheets("sheet1").Select ActiveWorkbook.SaveAs FileName:="C:\outFile.csv", _ FileFormat:=xlCSV, CreateBackup:=False ActiveWorkbook.Close End Sub

  • CSVファイルの改行

    似たような質問はあったのですが、解決できませんでした。 複数のテーブル(mysql)から抽出したデータをCSVファイルにして ダウンロードという動きを作りましたが、Excelでは改行されているのに メモ帳だと改行されません。 配列の最後に"\r\n"を挿入してみたところ、メモ帳での改行はできたのですが、 Excelに必要ない改行が入ってしまいます。(あたりまえですよね) 改行コードの入れるタイミングと方法を教えて頂けますか。 select文 while($rows = @mysql_fetch_array($result)){ $list[$i] = array ($aaa,$bbb,$ccc); $i++; } $filename = 'ファイル名'; $fp = fopen($filename.'.csv', 'w'); foreach ($list as $line) { fputcsv( $fp , $line ); } fclose($fp); ZIP圧縮処理後ダウンロード 環境:php5,mysql5

    • 締切済み
    • PHP
  • テキストファイルウィザードを使用したCSVファイル読み込みの挙動について【Excel2003】

    テキストファイルウィザードを使用したCSVファイル読み込みの挙動について【Excel2003】 <CSVファイル例> "aaaa","bbb<改行コード 0d0A>bb","ccc" 上記のようなCSVファイルを、 ダブルクリックにてExcel起動すれば正常に表示されますが、 テキストファイルウィザード(データ→外部データ取り込み→データの取り込み) を使用して、読み込みを行うと改行されて表示されてしまいます。 これは、Excelの仕様なのでしょうか? ご存知の方いらっしゃいましたら教えていただけますでしょうか? 現在の本質的な問題は、 ------------------------------------------------------------------- Excel2003にて、文字コードがUTF-8のCSVファイルを下記方法にて読み込む ・テキストファイルウィザードを使用 ・文字コードをUTF-8 ・カンマ区切り設定 で読み込みを行うと文字化けしないで表示されるのですが ダブルコーテーション中のデータ内に改行コード0d0aが含まれると 改行されてしまいます。 ------------------------------------------------------------------- と言う現象の調査をしております。

    • 締切済み
    • PHP
  • EXCEL VBA セルからファイル名を読み込む

    EXCEL VBAについての質問です 同じ処理を名前の違う複数のファイルで行いたいと思っています そこで、セルA2へファイル名の『○○.xls』○○部分だけをそれぞれのファイルに書き込んでおき、マクロは共通にしてファイル名をそれぞれのファイルから読み込んで実行したいと思っています。 良い方法を教えてください。 Workbooks("200809.csv").Activate Sheets("200809").Select Range("C3:C33").Copy Windows("○○.xls").Activate'←ここをファイルにあわせて変更できる形にしたい Sheets("報告書").Select Range("G5:G35").Select ActiveSheet.Paste Windows("200809.csv").Activate Range("K3:K33").Copy Windows("○○.xls").Activate’←ここ Sheets("報告書").Select Range("I5:I35").Select ActiveSheet.Paste Workbooks("200809.csv").Close SaveChanges:=False よろしくお願いします。

  • VBAでのcsv読み込みについて

     VBA初心者です。テキストファイル(ファイルの中はカンマ区切り)を別なEXCELシートではなくて、VBAを実行したEXCEL内のシート(例えばSheet2)に落としたいのですが、うまくいきません。  Workbooks.OpenText Filename:="C:\csv_test.txt", StartRow:=1, DataType:=xlDelimited, Comma:=True~ と記述すれば、別シートには落ちるのですが・・・。  簡単なことかもしれませんが、ご回答よろしくお願いいたします。

  • ExcelのVBAでCSVを読み込むと通貨になる

    Excel2010のVBAでCSVファイルを読み込んで処理させたいのですが、読み込んだデータをExcelが勝手に別のデータに変えてしまうので困っています。 例えば、123,456というデータは、フィールドにカンマがあるので、CSVでは"123,456"となりますが、これを以下のようなVBAのコードで読み込ませると、書式が通貨として扱われてしまって、データも123456になってしまいます。文字列として読み込まれていれば正しいデータとして読み込まれるように思うのですが、文字列として読み込ませる方法が分かりません。正しく元のデータ123,456のまま読み込ませるにはどうすればいいのでしょうか。 なお、CSVの各フィールドにカンマやダブルクォーテーションが混在していると、各フィールドに分割する処理が複雑でよく分からないので、下記のコードのようにExcelの機能でCSVを各フィールドに分割される方法で読み込ませたいです。 よろしくお願いします。 Workbooks.Open Filename:= "file.csv"

  • エクセルVBAでCSVを読み込んで別ファイルにまとめたいです。

    エクセルVBA初心者の者です。 マクロの記録でできたコードをいじって、 なんとか動くものができるレベルです。 Aというフォルダに20~40行程度の内容のCSVファイルが 数百個あります。開けてみないと何行あるのかわかりません。 そのAフォルダのCSVの内容をエクセルで開いて、別のエクセルファイルの一枚のシートにまとめたいのです。 最初にCSVファイル名を一枚のシートのA列に書き出すところ まではやれたのですが、それを順番に読み込んでコピペの 流れができません。 CSVファイル名読み込み 読み込んだファイル1つめCSV開く CSVの20~40行をコピー 別のエクセルファイルのシートに貼り付け 1つめCSV閉じる ↓ 読み込んだファイル2つめCSV開く 繰り返し こういうやり方じゃない方がいいのかもわかりません。 もしかして考え方も違うのでしょうか? サンプルコード教えていただけるとありがたいです。 よろしくお願いします。

  • VB6.0 CSVファイル読み込みについて

    VB6.0について質問です。 CSVファイルの読み込みを行いたいのですがうまくいきません。。。 以下のソースのどこに問題ありますでしょうか?>< 14個のカンマ区切りのCSVファイルを読み込んでいますが ファイルのデータを変更するとインデックスが有効範囲にありませんというエーラーがでます。。。 ファイルは3行で構成しているのですがヘルプを参照したら複数行の場合はLINE Input #1, MyString(i)と書いてありました。 しかしやってみると行ごとのデータを取得してカンマ区切りで取得してくれませんでした。。。 以下のソースで実行すると改行部でエラーになるようです。 改行を無視するようなロジックを入れる必要があるのでしょうか? Dim MyString(), i Open App.path & "\" & CSV_filename For Input As #1 ReDim MyString(13) Do While Not eof(1) Input #1, MyString(i) Label4(i).caption = MyString(i) i = i + 1 Loop Close #1

専門家に質問してみよう