こんにちは
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も見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
牛、豚、鶏、どれか一つ食べられなくなるとしたら?
牛肉、豚肉、鶏肉のうち、どれか一種類をこの先一生食べられなくなるとしたらどれを我慢しますか?
-
とっておきの「まかない飯」を教えて下さい!
飲食店で働く方だけが食べられる、とっておきの「まかない飯」。 働いてらっしゃる方がSNSなどにアップしているのを見ると、表のメニューには出てこない秘密感もあって、「食べたい!!」と毎回思ってしまいます。
-
EXCELからCSVにすると余計なカンマがつきます
Excel(エクセル)
-
EXCELでCSVファイル保存するとデータが無いところにカンマ
その他(ソフトウェア)
-
【Excel】 csvの作成時、空白セルにもカンマ
Excel(エクセル)
-
-
4
エクセルでCSVを編集するとき、空白(NULL?)はどう入れますか
Excel(エクセル)
-
5
【Excel VBA】カンマと改行コードを取り除くマクロ
Visual Basic(VBA)
-
6
CSV形式にすると出てくる空白を消したいです。
その他(Microsoft Office)
-
7
【ExcelVBA】各セルをダブルクォーテーションで括ってCSV保存したい
Visual Basic(VBA)
-
8
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
9
Excel:任意の列だけCSV形式で出力したい。
Excel(エクセル)
-
10
Excelマクロ 空白セルを無視してCSV出力
Excel(エクセル)
-
11
csvファイルを列数ごとに分割するExcelマクロが書けずに困っています
Visual Basic(VBA)
-
12
EXCEL VBAでテキストファイルの特定の場所にデータを書き込む方法
Visual Basic(VBA)
-
13
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
14
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
15
Excelでcsvやtxtで保存する時にダブルクォートが勝手に付く
Excel(エクセル)
-
16
エクセルでCSVファイルとして保存時 マークの増加を防ぐ方法を教えてください"
Excel(エクセル)
-
17
カンマ区切りのCSVファイルから"を削除したい
その他(プログラミング・Web制作)
-
18
VBAで配列の計算
Excel(エクセル)
-
19
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
-
20
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイルのアクセス回数について
-
エクセルのプロパティーでセキ...
-
ExcelブックをGoogleスプレッド...
-
Excel csv保存 列数が異なる場...
-
サブフォルダから部分一致のエ...
-
Wordで差込印刷した後に別々の...
-
EXCEL 検索時の設定
-
パワーポイントの自動開始方法
-
実行時エラー52
-
複数ワードファイルを一括でテ...
-
エクセル UserForm 呼び出しで...
-
【Excel VBA】ファイルを保存し...
-
エクセルファイル名に更新日時...
-
エクセルのマクロで行と列の削...
-
エクセルでcsvファイルを開いて...
-
マクロ実行後、表示がおかしくなる
-
カンマ区切りのCSVファイルから...
-
エクセルvbaでdocuworksprinter...
-
コマンドプロンプトのコピー関...
-
【VBA】テキストファイルを指定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイルのアクセス回数について
-
エクセルのプロパティーでセキ...
-
ExcelブックをGoogleスプレッド...
-
Wordで差込印刷した後に別々の...
-
Excel csv保存 列数が異なる場...
-
エクセル UserForm 呼び出しで...
-
PowerPoint 2002でファイル名を...
-
エクセルファイル名に更新日時...
-
サブフォルダから部分一致のエ...
-
エクセルのマクロで行と列の削...
-
マクロ実行後、表示がおかしくなる
-
VBAでマクロを使って、マクロ無...
-
複数のexcelのファイルを一括で...
-
EXCEL 検索時の設定
-
Excelのフッダ-に「ファイルの...
-
実行時エラー52
-
処理速度にムラがあり過ぎる
-
エクセルVBAに詳しい方! マクロ...
-
accessで作成したクエリーをエ...
-
エクセルの保存履歴を残す方法
おすすめ情報
初期想定しておりました オプション等の処理は難しいようでしたが、Tool, Codeをご提案いただきました WindFaller さんのご回答をベストアンサーとさせていただきます。
ありがとうございました。