【先着1,000名様!】1,000円分をプレゼント!

こんにちは。

EXCELから固定テキストでデータの利用をするために
ファイルをCSVにしました(件数約1万)。

その後テキストエディタで確認すると
最初の数千件は
1,2,3,4,5(改行)
6,7,8,9,0
のように目的とした文字列になってくれているのですが
ある所から急に
1,2,3,4,5,(改行)
6,7,8,9,0,
と、お尻にカンマがついてしまいます。

固定長で利用したいので、このカンマは余計なのですが、
カンマがつくならつくで、すべてのレコードについていれば
構いません。
なお、何回か試しているのですが、そのつどカンマが
現れる場所が違います。
時には最初カンマなし、途中カンマあり、また途中から
カンマなしなどというファイルも作られます。

どちらかに統一できる方法をご存知の方はいらっしゃいます
でしょうか。
お知恵を拝借したく存じます。
よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

》 固定テキストでデータの利用をするために


》 ファイルをCSVにしました

CSV にする目的が「固定テキストでデータの利用」というのが理解できません。
私なら PRN にします。此れはスペース区切りの固定長テキストデータになります。

ま、それはソレとして、範囲 A1:E1 に左から 1、2、…、5 と入力して、此れを下方にズズーッと1万行ドラッグ&ペーストしたものを CSV形式 で保存してみました。
しかしながら、仰るような「ある所から急にお尻にカンマ」が付くことはありませんでした。
ちなみに、テストしたのは Excel 2002 SP-3 です。

貴方も Excel のバージョンを明記すべきです。

この回答への補足

ご回答ありがとうございます。
また、失礼いたしました。
バージョンはEXCEL2003 SP3です。

補足日時:2009/01/27 10:41
    • good
    • 1
この回答へのお礼

このたびはご回答ありがとうございました。
結果、PRNでデータを作成しました。
とても勉強になりました。
ヒントを与えていただいてありがとうございます。

お礼日時:2009/02/03 18:08

下記マイクロソフトのHPを参考にして見ましょう。


現象とは無関係ですが、
そもそもCSVにするのは取込先で","を区切り文字として利用するためで
固定長で取り込むのなら","なしの方がよいのではないでしょうか.

参考URL:http://support.microsoft.com/kb/400253/ja
    • good
    • 0
この回答へのお礼

このたびはご回答ありがとうございました。
CSVにした理由は、目視でデータ確認を行うのに
見易さを考えてのことでした。
結果苦労しましたが。
しかし勉強になりました。
ありがとうございます。

お礼日時:2009/02/03 18:04

 入力中に、最後のセルにカソールが移動してクリアしてしまったとか・・最後のセルがnullではなく""が入っていたとかじゃありませんか?


 テキストエディタで、[,\s*$] → []と置換するのが早い。
 たとえば、Em Editor(free) http://www.vector.co.jp/soft/winnt/writing/se047 …
 とか・・・
    • good
    • 1
この回答へのお礼

このたびはご回答ありがとうございました。
最後のセルは全て削除しましたので、何らかの
文字列があることは考えにくいです。
やはりEXCELのバグっぽいですね。
勉強になりました。
ありがとうございます。

お礼日時:2009/02/03 18:02

エクセルのバグかもしれませんね。



原因を探るより、ワードの置換機能を使って、「,」+「改行」を「」(何もなし)に置き換えたほうが手っ取り早いでしょう。

置換ダイアログの左下にあるオプションボタンを押し、
右下のあいまい検索のチェックを外すと、
特殊文字(改行など)が入力できるようになります。

ちなみに、ワードでは改行は段落記号となっています。
    • good
    • 1
この回答へのお礼

このたびはご回答ありがとうございました。
恐らくEXCELのバグなんでしょうね。
勉強になりました。
ありがとうございます。

お礼日時:2009/02/03 17:59

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【Excel】 csvの作成時、空白セルにもカンマ

こんにちは

A列のA10まで、に値が入ります。
B列は、B1=IF(A1="","",A1) として、B10までフィルしました。

A1からA5までに1、2、3、4、5と入力し、A6からA10は空白にします。
B1からB5までは、1、2、3、4、5が表示され、
B6からB10までは空白です。

このSheetを、csvで保存し、テキストで開きますと

1,1
2,2
3,3
4,4
5,5
,
,
,
,
,
,


となります。

この、6行から10行の「,」がないcsvを出力したいのですが、
元のSheetの式はどうしたらよいでしょうか。

Excel2007です。

宜しくお願いします。

Aベストアンサー

>この、6行から10行の「,」がないcsvを出力したいのですが、元のSheetの式はどうしたらよいでしょうか。
そんな都合の良い数式は見当たりません。

Excelのセルに数式を入力すると計算結果で""を代入すると何もない状態ではありません。
文字数が0の文字列としてデータが入りますのでA列が何もない場合(NUL)でもB列の位置を示すカンマ(,)が出力されます。

QEXCELコンマの簡単な取り方

こんにちは!
エクセルで、 
'山田'太郎
'鈴木'花子
のようにひとつの列にずーっとひとつのセルに二つの『'』
が入ったデータが続いています。
これをサクっととる方法を教えてください!
たぶん区切り位置の調整か何かをすればよかったような気がするのですが、どうにもうまくいきません。
宜しくお願いいたします!

Aベストアンサー

関数で対応可能です。
名前が入っているセルをA1と仮定して、近くの空いている列に、「=SUBSTITUTEA1,"'","")」と入れて計算させ、コピー⇒名前が入っているセルに“値貼り付け”でOKです。

SUBSTITUTEという関数は、対象セル内の文字を置き換える機能を持っています。
上記の式では、『A1のセルの'(シングルコーテーション)を削除せよ』ということになります。
※)本当は式の最後の""の間に置き換える文字を入れることになります。ただ、今回は何も指定しないことによって'の削除としています。

Qカンマ区切りのCSVファイルから""を削除したい

初めて質問いたします

以下のような形式のCSVファイルがあります
例)
品名,数量,単価,金額
"りんご",1,150,150
"バナナ",10,200,2000
"メロン","1,000","2,000","2,000,000"

上記のように、品名にはダブルクォーテションがつき、
数量、単価、金額については桁区切りのカンマが発生する場合、ダブルクォーテーションで囲まれています

上記のようなデータを
りんご,1,150,150
バナナ,10,200,2000
メロン,1000,2000,2000000
のように別ファイルへ出力するにはどのようにすればよいでしょうか?

プログラムでの処理で、WSHを使ったものを教えていただけますと、幸いです
よろしくお願いいたします

Aベストアンサー

もう仕事は終わってしまったかもしれませんが、(^^ゞ
VBS で作ってみました。
対象CSVファイルのあるフォルダに保存して実行してみてください。
_NewFilesフォルダに保存されます。
※対象外のCSVファイルが有っても処理してしまいます

Dim oSh
Dim oFs
Dim BaseFolder
Dim newFolder
Dim f

Set oSh = CreateObject("Wscript.Shell")
Set oFs = CreateObject("Scripting.FilesystemObject")
Set BaseFolder = oFs.getFolder(oSh.currentDirectory)

newFolder = BaseFolder.Path & "\" & "_NewFiles"

If oFs.folderExists(newFolder) = False Then
oFs.createFolder (newFolder)
End If

For Each f In BaseFolder.Files
If oFs.GetExtensionName(f) = "csv" Then
Call changeIt(f.Path, newFolder)
End If
Next

MsgBox newFolder & " フォルダ内を検証"


Sub changeIt(orgFname, trgFolder)
Dim oFs
Dim orgF
Dim newF
Dim newFname
Dim buF
Dim oReg

Dim Mcol
Dim M
Dim M1, M2
Const forReading = 1
Const forWriting = 2

Set oFs = CreateObject("Scripting.fileSystemObject")
Set oReg = CreateObject("VBScript.RegExp")
Set orgF = oFs.getFile(orgFname).openAsTextStream(forReading)

newFname = trgFolder & "\" & oFs.getBaseName(orgFname) & "_New.csv"
oFs.CreateTextFile (newFname)
Set newF = oFs.getFile(newFname).openAsTextStream(forWriting)

With oReg
.Pattern = """.*?"""
.IgnoreCase = False
.Global = True
End With

Do Until orgF.atendofstream
buF = orgF.readline
Set Mcol = oReg.Execute(buF)

For Each M In Mcol
M1 = Replace(M.Value, ",", "")
buF = Replace(buF, M.Value, M1)
M2 = Replace(M1, Chr(34), "")
buF = Replace(buF, M1, M2)
Next

newF.WriteLine buF
Loop

orgF.Close: newF.Close
Set Mcol = Nothing
Set oReg = Nothing

End Sub

もう仕事は終わってしまったかもしれませんが、(^^ゞ
VBS で作ってみました。
対象CSVファイルのあるフォルダに保存して実行してみてください。
_NewFilesフォルダに保存されます。
※対象外のCSVファイルが有っても処理してしまいます

Dim oSh
Dim oFs
Dim BaseFolder
Dim newFolder
Dim f

Set oSh = CreateObject("Wscript.Shell")
Set oFs = CreateObject("Scripting.FilesystemObject")
Set BaseFolder = oFs.getFolder(oSh.currentDirectory)

newFolder = Bas...続きを読む

QCSV形式にすると出てくる空白を消したいです。

エクセル形式で、表を作ってCSV形式で保存するのですが、
CSV形式で保存したデータをメモ帳(テキスト形式)で開くと、
エクセル・CSV形式の時には表示されていなかった空白(半角スペース)が出来てしまっています。。。


業務上必要なデータで、項目には半角英数13ケタの数字しか入力してはいけないのですが、
その空白が出来てしまってしまうので、エラー扱いにされてしまいます。

どのようにすればテキスト形式で表示したときにこの空白が生れないように出来るのでしょうか?
宜しくお願い致します。

Aベストアンサー

ご存じかもしれませんが、エクセルの仕様で12桁以上の数字を入れると表示がエラーのようにになります。
正確に言うとエラーでは、無くて指数表示になっているわけですが、13桁の数字を入力されているとのことですので、こちらは対処済みかと思います。
今回の質問は、半角スペースが入ってしまうということですよね?
前出の指数表示の表示方法の対処方法とにていますが、該当するセルの書式を設定することで回避出来ます。
設定方法は、13桁の数字の入っているセルの書式設定を開きます。
表示形式をユーザーにして、種類の一番上のサンプルを見てください。
[0_ ] ←かっこ内の部分を確認していただくとおわかりになるかと思います。
0は、数字ですが、その後ろにアンダーバーと半角スペースが入ってしまっています。
[0]だけを残し、アンダーバーとスペースを削除してください。
その後にCSV形式で、出力してあげればスペースは、消えています。
但し、再度エクセルからそのCSVを読込すると書式が、標準なのでスペースも入ってしまいますし、ケースによっては、指数表示(3.21099E12)にようになってしまうかもしれませんが、その場合は、書式の設定で直してください。
※添付の画像で赤の楕円で囲んだ部分です。

ご存じかもしれませんが、エクセルの仕様で12桁以上の数字を入れると表示がエラーのようにになります。
正確に言うとエラーでは、無くて指数表示になっているわけですが、13桁の数字を入力されているとのことですので、こちらは対処済みかと思います。
今回の質問は、半角スペースが入ってしまうということですよね?
前出の指数表示の表示方法の対処方法とにていますが、該当するセルの書式を設定することで回避出来ます。
設定方法は、13桁の数字の入っているセルの書式設定を開きます。
表示形式をユーザーにし...続きを読む

QExcelマクロ 空白セルを無視してCSV出力

Excelのマクロについて質問します。

<sheet1>の内容をCSVに出力するマクロを使用しているのですが、
問題があって困っています。

<seet1>のA1~K30までは数式が入っていて、<sheet2>のA1~A30に
「OK」と表示されている場合、<sheet1>の対応した行に数値が表示されます。
「OK」以外の場合は、空白になるようにしてあります。


【sheet1】
  A    B    C    D    E …
1 100  200  300  400  500
2 100  200  300  400  500
3 100  200  300  400  500
4 100  200  300  400  500
5
6


【sheet2】
  A
1 OK
2 OK
3 OK
4 OK
5
6

<sheet1>をマクロでCSV出力する際に、「空白だけど数式が入っているセル」を
除外する方法を教えてください。

現在は「空白だけど数式が入っているセル」もCSV出力されてしまい、「,」が
連続で表示されるので、手動で「,」を削除しています。

■今使用しているマクロは以下になるので、これに追記する形で改良できないでしょうか。

Sub CSV出力()
Dim FileN As String
FileN = Application.GetSaveAsFilename( _
InitialFileName:="book1.csv", _
FileFilter:="CSV ファイル (*.csv), *.csv")

Sheets("sheet1").Copy
ActiveWorkbook.SaveAs Filename:=FileN, FileFormat:=xlCSV
ActiveWorkbook.Close Savechanges:=False
End Sub

よろしくお願いします。

Excelのマクロについて質問します。

<sheet1>の内容をCSVに出力するマクロを使用しているのですが、
問題があって困っています。

<seet1>のA1~K30までは数式が入っていて、<sheet2>のA1~A30に
「OK」と表示されている場合、<sheet1>の対応した行に数値が表示されます。
「OK」以外の場合は、空白になるようにしてあります。


【sheet1】
  A    B    C    D    E …
1 100  200  300  400  500
2 100  200  300  400  500
3 100  200  300  400  500
4 10...続きを読む

Aベストアンサー

こんばんは。

出力したものは、行の長短が出来て、凸凹になってしまってもよいということですか?

>これに追記する形で改良できないでしょうか。

Sheets("Sheet1").Copy の後で、あくまでも、空白が「文字列」になっている条件ですが、
Range("A1:K30").SpecialCells(xlCellTypeFormulas, xlCellTypeConstants).Delete Shift:=xlToLeft

とすれば出来ます。

しかし、こんなコードも考えられます。以下の場合は、複雑な条件を取りつけることが可能です。
今回は、「""」という表示になっていることが条件です。

'//標準モジュールで、出力は、ActiveSheet
Sub Test1()
 Dim FName As String
 Dim Fno As Integer
 Dim myRange As Range
 Dim i As Long, j As Long
 Dim strLine As String
 Set myRange = Range("A1", "K30") '範囲
 
 FName = Application.GetSaveAsFilename( _
           InitialFileName:="book1.csv", _
           FileFilter:="CSVファイル (*.csv), *.csv")
 If FName = "False" Or FName = "" Then Exit Sub 'キャンセルが利くようにする
 
 Fno = FreeFile()
 Open FName For Output As #Fno
 For i = 1 To myRange.Rows.Count
  For j = 1 To myRange.Columns.Count
   If Trim(Cells(i, j).Value) <> "" Then
    strLine = strLine & "," & Cells(i, j).Value
   End If
  Next j
  Print #Fno, Mid(strLine, 2)
  strLine = ""
 Next i
 Close #Fno
 Set myRange = Nothing
End Sub

こんばんは。

出力したものは、行の長短が出来て、凸凹になってしまってもよいということですか?

>これに追記する形で改良できないでしょうか。

Sheets("Sheet1").Copy の後で、あくまでも、空白が「文字列」になっている条件ですが、
Range("A1:K30").SpecialCells(xlCellTypeFormulas, xlCellTypeConstants).Delete Shift:=xlToLeft

とすれば出来ます。

しかし、こんなコードも考えられます。以下の場合は、複雑な条件を取りつけることが可能です。
今回は、「""」という表示になっていることが条件です。...続きを読む

Q【VBA】ExcelマクロでCSVファイルに保存したデータが""で囲まれてしまう

添付図のような、Excel2003で作成した表内のデータを
CSVで保存するマクロを作成したのですが、
図のように、CSVファイルに「""」で値が囲まれた状態で、
保存されてしまいます。

下記にマクロを記載しますので、
どうすれば文字列が「""」で囲まれずに、
カンマ区切りだけのデータで出力されるのか、
ご存知の方おられましたら、ご教示お願い致します。

Sub csv保存()
Dim フォルダ名 As String
Dim パス名 As String
Dim ファイル名 As String
Dim データ As Variant
Dim 行数 As Long, 列数 As Integer
Dim i As Integer, j As Long, k As Long

ファイル名 = "test.csv"
フォルダ名 = "csv"
パス名 = ActiveWorkbook.Path & "\" & _
フォルダ名

'csvフォルダが存在しなければ作成する
If Dir(パス名, vbDirectory) = "" Then
MkDir パス名
End If
ChDir パス名

Open ファイル名 For Output As #1

For i = 1 To Worksheets.Count
Worksheets(i).Activate
Worksheets(i).Cells(1, 1).Select
ActiveCell.CurrentRegion.Select
行数 = Selection.Rows.Count
列数 = Selection.Columns.Count

For j = 1 To 行数
For k = 1 To 列数 - 1
データ = Selection.Cells(j, k) _
.Value
Write #1, データ;
Next k
Write #1, Selection.Cells(j, 列数) _
.Value
Next j
Next i
Close #1
End Sub

添付図のような、Excel2003で作成した表内のデータを
CSVで保存するマクロを作成したのですが、
図のように、CSVファイルに「""」で値が囲まれた状態で、
保存されてしまいます。

下記にマクロを記載しますので、
どうすれば文字列が「""」で囲まれずに、
カンマ区切りだけのデータで出力されるのか、
ご存知の方おられましたら、ご教示お願い致します。

Sub csv保存()
Dim フォルダ名 As String
Dim パス名 As String
Dim ファイル名 As String
Dim データ As Variant
Dim ...続きを読む

Aベストアンサー

Write # は文字列を""で囲んで出力する仕様になっています。
そのまま出力したければ、Print #を利用すればよろしいかと。
ただし、Printの場合は区切り文字(カンマ)を自動で出力してくれませんので、併せて出力する必要があります。

For j = 1 To 行数
  For k = 1 To 列数 - 1
    データ = Selection.Cells(j, k) .Value
    Print #1, データ; ",";
  Next k
  Print #1, Selection.Cells(j, 列数).Value
Next j

なお、いらぬおせっかいですが、ドライブが複数ある環境下だと、
 ChDir パス名
だけでは必ずしもcvsフォルダ内に、ファイルが作成されるとは限りません。
 Open パス名 & "\" & ファイル名 For Output As #1
のように、フルパスで指定しておいた方が確実かと…

QExcel 数値の前の「 ' 」を一括削除したい

取引先から来るデーターで
'400783108700 と入力され書式は文字列となっています。

この数値は海外のJANコードナンバーで実際は
0400783108700 が正です

バーコード作成ソフトを使う時に効率が悪くて困っています。取引先にも改善依頼をお願いしておりますが、なかなか進みません。10点ぐらいなら一つ一つ変更するのですが、50点~100点位あると・・・

複数のセルの「 ' 」(アポストロフィー)を一括で削除する方法、または0に置き換える方法があればお教えいただけないでしょうか。編集→置換では出来ませんでした。「 ' 」がデータ上は無いことになっていて読み込めません。
どうぞ宜しくお願いします。

Aベストアンサー

★シングルクォートを削除したい:Excel エクセルの使い方-入力/編集
http://www.relief.jp/itnote/archives/000321.php
では?

Qエクセル:セル内の文字列の最後の「,]を消したい。

エクセル:セル内の文字列の最後の「,]を消したい。

以下のように、数字(1桁または2桁)がカンマでわかれたデータがあります。
この文字列の中で、一番最後の「,」だけ消したいのですが、
何か良い方法はないでしょうか。


1,1,1,1, ⇒最後のカンマを消したい
1,2,3,4  ⇒カンマがないのでそのままでOK
1,1,2,3,4 
1,2,3,  
1,11,12,

Aベストアンサー

こんなんでもいいかも
=SUBSTITUTE(TRIM(SUBSTITUTE(A1,","," "))," ",",")
とか
=LEFT(A1,LEN(A1)-(RIGHT(A1,1)=","))

Qexcelデータをコンマ付きテキストで出力したい

おはようございます。
excelデータをコンマ付きテキストで出力したいのですが、その方法を教えてください。

Aベストアンサー

CSVなら
名前をつけて保存で
ファイルの種類でCSV(カンマ区切り)
を選ぶ

QExcel csv保存 列数が異なる場合に、余分にカンマをつけない(ヘッダとデータの列数を変える)

こんにちは

Excelにてcsv保存を行う際、
 A B C D
 E F
 G H
(スペースはセルが違うと思ってください)
このようなデータを保存すると、
 A,B,C,D
 E,F,,
 G,H,,
の状態でファイルが出来上がりますが、
下のように2,3行目の後半のカンマがない状態で保存する簡単な方法はないでしょうか?
 A,B,C,D
 E,F
 G,H
同じフォーマットで、もっと行数の多いファイルを大量に扱うのに、
データ量削減のため、不要な部分はできるだけ減らしたい。

以下処置は可能ですが、保存方法やその他工夫でできないか教えてください。
① マクロで一行づつ、テキストファイルに書き込む。
② ヘッダーを除く部分でcsvファイルを作成し、後からヘッダー部分だけマクロから書き込む。
  (一連の作業はマクロで実施)

保存時のオプションで指定できればベストです。

よろしくお願いいたします。

Aベストアンサー

こんにちは。
#2の回答者です。

>ものによりますが1.3倍ほどになるのでできれば、、、といったところですね。
>ヘッダーが6列、データが3列の2000~5000、一日に3000ファイルほど吐き出しています。

私が想像していたのは、巨大なCSVファイルを考えていました。しかし、まさか、数で来るとは思いませんでしたね。

一日に3000ファイルほど? →1.3倍 ->[ファイルサイズの問題に発展]
もちろん、SHIFT-JISですよね。

カンマだけの問題ではなさそうな気がします。
CSVファイル生成には、問題は発生していないとしても、処理は、CSV生成時にということになるでしょうね。それも、完全自動化しなければ、3,000ファイルなどの処理ができるはずもありません。

とりあえず、最初の第一案から、マクロを提示します。

ツールを使う方法は、どうしても一括処理ということを考えます。しかし、何が問題かというと、ファイル名の決定方法と、タイム・スタンプの問題があります。それを変更しないようにするのではないかと思うと、また別なテクニックが必要になります。

以下は、A1からデータがあることを想定したマクロです。
'//
Sub MakingCSV()
  Dim LastRow  As Long
  Dim LastCol As Long
  Dim Rng As Range
  Dim buf As String
  Dim fNo As Integer
  Dim fn As String
  Dim i As Long, j As Long
  
  fn = ThisWorkbook.Path & "\Test1.csv"  'ファイル名
  fNo = FreeFile()
  Set Rng = ActiveSheet.Range("A1").CurrentRegion
  LastRow = Rng.Cells(Rng.Cells.Count).Row
  Open fn For Output As #fNo
  For i = 1 To LastRow
    LastCol = Rng.Cells(i, Columns.Count).End(xlToLeft).Column
    For j = 1 To LastCol
       buf = buf & "," & Rng.Cells(i, j).Text
       DoEvents
    Next j
     Print #fNo, Mid$(buf, 2)
     buf = ""
  Next i
  Close #fNo
  MsgBox "終了", vbInformation
 End Sub

こんにちは。
#2の回答者です。

>ものによりますが1.3倍ほどになるのでできれば、、、といったところですね。
>ヘッダーが6列、データが3列の2000~5000、一日に3000ファイルほど吐き出しています。

私が想像していたのは、巨大なCSVファイルを考えていました。しかし、まさか、数で来るとは思いませんでしたね。

一日に3000ファイルほど? →1.3倍 ->[ファイルサイズの問題に発展]
もちろん、SHIFT-JISですよね。

カンマだけの問題ではなさそうな気がします。
CSVファイル生成には、問題は発生していない...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング