
あるデータベースからエクスポートした4MB位のCSVをエクセルで集計しています。
エクセルにCSVを取り込むと、エクセルBook自体が4MB位になり(当然です)、
取り込んだシートから複数の集計を別シートで作成していくと、
最終的に保存したBookのファイルサイズが20MB越えそうです。
それでこんな事はできないでしょうか?
CSVファイル自体はWindows標準のzip圧縮すると500KB位になりました。
Excelブックを開いた時に、マクロボタンを押すなどして、zip圧縮されたままの
CSVデータを、例えばCSVという名前のシートに取り込むことはできないでしょうか?
そして、紐づいた各シートで集計がされると。(グラフやピボットテーブル等とリンク)
Excelブックを閉じるときにCSVシートを自動的にクリアして終了と。
これができれば、最低限のサイズのExcelブックとzip化したCSVを保管しておけば
良い事になるという机上の空論なのですが、、、
簡単なサンプルマクロでもあると助かります。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
圧縮されたまま、という言葉通りに受け取ったらできません。
しかし、zipファイルのまま、という部分だけで考えればできます。
できますが、zipファイルから対象のCSVファイルをTempディレクトリなどで解凍する必要があります。
そのため、都度実行するのに相応の時間もかかることになります。
それを比較してもメリットがあるならそうすればいいかと思います。
しかしそういう問題ではないと思います。
集計にそれが必要なら別に20MBになっても何の問題もないかと思います。
1ファイルで20MBになるのが嫌なら4MBのファイルを5つ用意して、集計用のファイルからブック参照で情報を集計すればいいかと思います。
また、後戻りが利くなら、エクスポートする段階で、集計されたデータをエクスポートすればいいかと思います。
No.3
- 回答日時:
こんにちは
>保管しておけば良い事になるという机上の空論なのですが、、
残念ながら「机上の空論」です。
そのCSVデータが、常に参照する必要があるようなものなら、あきらめて独立のエクセルファイルなどにしておくのが宜しいかと。
ご質問の様に毎回、解凍して読み込むような処理をしていると、No1様がご指摘のように悲しい結末になろうかと。
「ある処理」をするときにだけ参照すれば良いような類のデータであるなら、その処理の時だけシートに読み込んで処理が終わったら、そのシートは削除してから保存するような考え方もあるでしょう。
実行時のメモリ消費も押さえたいというのであれば、CSVを一気に展開せずに、テキストファイルとして1行ずつ(あるいは数行?)読み込みながら処理をしてゆくという方法も考えられます。
シークエンシャルに処理できるような内容でないと難しいかも知れませんが。
結局のところ、処理の内容と頻度などから、方法を判断するのが良いのではないでしょうか。
No.2
- 回答日時:
元がデータベースならそこにExcelを繋げられないの?(エクスポート自体をなくす)
若しくはSQLiteなどの軽量化データベースにCSVデータを放り込んで、それとExcelを接続する。
なんて詳しくない人間の戯言ですけどね。
No.1
- 回答日時:
できないから。
それ。できたとしても、ZIP圧縮してもデータとして取り出す時にはテキストに置き換わるので圧縮は解除される。
むしろ圧縮ファイルを展開する手間がかかるだけと言う悲しい結果になるよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
[VBA]標準機能のみでパス付zipファイルの解凍
Excel(エクセル)
-
【Excel VBA】Windowsの標準機能のみでExcelファイルをZIPファイルに圧縮する方法
Excel(エクセル)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
-
4
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
5
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
6
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
7
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
8
エクセルファイルを開く時、常に同じシートから開くようにするには?
Windows Vista・XP
-
9
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
10
VBAのzip解凍についてのご質問です
Visual Basic(VBA)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
CSVファイルの指定列だけを読み込んでEXCELに表示したい
Excel(エクセル)
-
13
エクセルVBAでEdate関数は使えますか?
Excel(エクセル)
-
14
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
15
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
16
EXCEL(VBA) 末尾の改行のみ削除したい
Excel(エクセル)
-
17
ファイルコピーのスクリプトで上書き確認のダイアログが表示
その他(プログラミング・Web制作)
-
18
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
19
エクセルVBAで一つ上の階層を指定して保存したい
Excel(エクセル)
-
20
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
別ブックをダイアログボックス...
-
VBA 別ブックからコピペしたい...
-
ワイルドカード「*」を使うとう...
-
【Excel VBA】書き込み先ブック...
-
VBAで別ブックのシートを指定し...
-
Excel2007VBAファイルの表示に...
-
Excel2013 ウインドウサイズの固定
-
現在開いているbook全てを対象...
-
【ExcelVBA】zip圧縮されたCSV...
-
ユーザーフォームの切り替えに...
-
2つ目のコンボボックスが動作...
-
エクセルVBAで読み取りパスワー...
-
VBA アプリケーション定義また...
-
VBS Bookを閉じるコード
-
VBAで複数のブックを開かずに処...
-
VBAのハイパーリンクについて質...
-
[Excel]ADODBでNull変換されて...
-
EXCEL2013 シート内容を別ブッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
別ブックをダイアログボックス...
-
VBA 別ブックからコピペしたい...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
VBA コードを実行すると画面が...
-
VBAで別のブックにシートをコピ...
-
VBAで別ブックのシートを指定し...
-
【Excel VBA】書き込み先ブック...
-
Excelマクロ 該当する値の行番...
-
【ExcelVBA】zip圧縮されたCSV...
-
[Excel]ADODBでNull変換されて...
-
【ExcelVBA】インデックスが有...
-
Excel2007VBAファイルの表示に...
-
VBAで複数のブックを開かずに処...
-
vbaで他のブックに転記したい。...
-
エクセルマクロで、他ブックか...
-
vbaでvbaProjectのパスワード解...
-
VBA 実行時エラー 2147024893
-
【マクロ】違うフォルダにある...
おすすめ情報