
こんにちは
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ファイルを作成し、後からヘッダー部分だけマクロから書き込む。
(一連の作業はマクロで実施)
保存時のオプションで指定できればベストです。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
こんにちは。
#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
回答ありがとうございます。
コードまで用意いただいて・・・!
形式は・・・Shift-JISのはず。気にしていなかったです。
>カンマだけの問題ではなさそうな気がします。
すみません、懸念点が不明ですが、容量が増えすぎでは?ということであれば、
Excelでの1セル分のデータはそれぞれ2文字程度なので、
余分なし(3列)→一行 8文字
余分あり(6列)→一行 11文字
になるのでそんなものかなと。
タイムスタンプはとりあえず気にしていないですね。
ファイル名と中身がしっかりしていればOKなので。
提示いただいたコードは質問文に記載させていただいた①の処置になりますね。
ファイル名は別途リスト化されているのでfor next かLoopかでくくって、順次代入すればこのコードでも十分動作には問題ありません。
あと、申し訳ありませんが、はじめの回答でいただいたツールについては、
諸事情によりPCにソフトその他インストールが禁止されているのでひとまず見送らせていただきます。
ありがとうございます。
No.2
- 回答日時:
こんばんは。
通常、CSVは、四角に囲まれた範囲を出力するために、そのようなカンマが入りますが、それほど負担になるものなのでしょうか。
>2,3行目の後半のカンマがない状態で保存する簡単な方法はないでしょうか?
このようなことは、マクロで作るのは大した問題ではありません。今、試しに3種類のマクロを作ってみましたが、ファイルの大きさを気にするようなものより、もはや、CSVを吐き出す時間の問題です。
>データ量削減のため、不要な部分はできるだけ減らしたい。
1行につき、カンマ2つを減らすとして、例えば、50,000行あるとすれば、カンマ1つで、2byte * 2 =4byte , 5万行* 4byte =200,000 byte, これをキロバイトに直すと、約195kbyte になります。
郵政省のZipCodeファイルは、そのような無駄なカンマは存在しませんが、123,734行あり、16列ほどあります。このファイルの大きさは、123,734行で、12.4Mbyte だから、それが、たとえ、1割の1M 違っていても、全体的に、そこまで追求する人は、DOSの時代ならともかく、現代では考える人が少ないのではないでしょうか。
もう少し、なぜ、そうせざるを得ないか、よくわからないのです。
それでも、という場合は、外部ツール(Basp21)を使ってよければ、公開します。他で、Excelの組み込み型のツールは知らないからですが、そうでないと、ちょっと私には難しいような気がします。
http://www.hi-ho.ne.jp/babaq/basp21.html
Bsmtp20070629-587.lzh(119KB) 2007/06/29
(これで何をするかというと、正規表現置換をするわけです。つまり、簡単にするなら、高性能のテキストエディタの正規表現の置換でも、可能です。)
回答ありがとうございます。
実際ファイルでは、ヘッダーが6列、データが3列の2000~5000、一日に3000ファイルほど吐き出しています。
ものによりますが1.3倍ほどになるのでできれば、、、といったところですね。
一ファイルの保存スピードも求めていないのでマクロ組んでも良いのですが、簡易にできる方法があれば作る前に知っておきたく、色々検索しています。
ツールご紹介ありがとうございます。確認させて頂きます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
コーピングについて教えてください
皆さんはストレスを感じたとき、どのような方法や手段、テクニックで対処していますか?
-
集中するためにやっていること
家で仕事をしているのですが、布団をはじめ誘惑だらけでなかなか集中できません。
-
EXCELでCSVファイル保存するとデータが無いところにカンマ
その他(ソフトウェア)
-
EXCELからCSVにすると余計なカンマがつきます
Excel(エクセル)
-
【Excel】 csvの作成時、空白セルにもカンマ
Excel(エクセル)
-
-
4
CSV形式にすると出てくる空白を消したいです。
その他(Microsoft Office)
-
5
Excelマクロ 空白セルを無視してCSV出力
Excel(エクセル)
-
6
エクセルでCSVを編集するとき、空白(NULL?)はどう入れますか
Excel(エクセル)
-
7
【Excel VBA】カンマと改行コードを取り除くマクロ
Visual Basic(VBA)
-
8
Excel:任意の列だけCSV形式で出力したい。
Excel(エクセル)
-
9
CSVの定義
その他(パソコン・スマホ・電化製品)
-
10
Excelでcsvやtxtで保存する時にダブルクォートが勝手に付く
Excel(エクセル)
-
11
カンマ区切りのCSVファイルから"を削除したい
その他(プログラミング・Web制作)
-
12
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
13
Excelで、空白を表示したい
Excel(エクセル)
-
14
EXCELの文字列操作で文字数不足の分をスペースで補う方法
Excel(エクセル)
-
15
エクセル:セル内の文字列の最後の「,]を消したい。
その他(Microsoft Office)
-
16
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
17
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
18
エクセル→CSVにした時、スペースの数が違う
Excel(エクセル)
-
19
VBAでのフィルタについて(空白行の削除)
Excel(エクセル)
-
20
VBA:Openステートメントで開いたCSVファイルの特定行を削除する方法
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのプロパティーでセキ...
-
ファイルのアクセス回数について
-
ExcelブックをGoogleスプレッド...
-
Wordで差込印刷した後に別々の...
-
マクロ実行後、表示がおかしくなる
-
Excel csv保存 列数が異なる場...
-
エクセルでcsvファイルを開いて...
-
Word2010で閉じるボタン押下後...
-
複数のexcelのファイルを一括で...
-
実行時エラー52
-
エクセルの保存履歴を残す方法
-
エクセルファイル名に更新日時...
-
エクセル UserForm 呼び出しで...
-
処理速度にムラがあり過ぎる
-
ワ ード 差込印刷 グループ毎...
-
EXCEL 検索時の設定
-
サブフォルダから部分一致のエ...
-
【Excel VBA】ファイルを保存し...
-
エクセルvbaでdocuworksprinter...
-
エクセルで複数のコメントのサ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのプロパティーでセキ...
-
ファイルのアクセス回数について
-
ExcelブックをGoogleスプレッド...
-
Excel csv保存 列数が異なる場...
-
Wordで差込印刷した後に別々の...
-
マクロ実行後、表示がおかしくなる
-
エクセル UserForm 呼び出しで...
-
サブフォルダから部分一致のエ...
-
PowerPoint 2002でファイル名を...
-
エクセルファイル名に更新日時...
-
実行時エラー52
-
【Excel VBA】ファイルを保存し...
-
Word2010で閉じるボタン押下後...
-
For~Nextルーチンで最初の1回...
-
EXCEL 検索時の設定
-
エクセルのマクロで行と列の削...
-
複数のexcelのファイルを一括で...
-
vbaでボタンをクリックして上書...
-
大量のCSVファイルをExcel形式...
-
エクセルでcsvファイルを開いて...
おすすめ情報
初期想定しておりました オプション等の処理は難しいようでしたが、Tool, Codeをご提案いただきました WindFaller さんのご回答をベストアンサーとさせていただきます。
ありがとうございました。