エクセルで仕事用のデータを処理しています。
処理、といっても顧客データです。
よって
「関数バシバシ入れてある」
「マクロプログラムが膨大に含まれている」
と言ったものではありません。
セルに顧客の氏名、住所、メルアド、その他データなどが入っているだけです。
とはいえ、このデータが非常にたくさんあります。
ファイル容量は17MB弱あります。
私の使っているパソコンはOS=Windows10 、エクセルバージョン=Excel2002、メモリ搭載量=8GBです。
まず、この顧客データを開くのが非常に遅いです。40秒くらいかかります。
セーブにも同じぐらい、40秒ぐらいの時間がかかります。
それでも使えないことは無いのですが、いつか
「ファイルがぶっ壊れるんじゃないか?」
という心配をしています。
エクセルの容量を減らしたり、ファイルのロード、セーブの時間を短縮するにはどうしたらいいでしょうか?
A 回答 (11件中1~10件)
- 最新から表示
- 回答順に表示
No.11
- 回答日時:
実験的意味合いで
ワークシートデータをcsvファイルに変換するvbsを書きましたので
コピーブックで気が向いたら試してみてください
Dim objEXL
Dim f
Dim ws
If WScript.Arguments.Count<1 Then
MsgBox "Bookをアイコンにドロップして下さい"&Chr(10)&"シートごとにcsvファイルを出力します"
WScript.Quit
End If
Set objEXL=CreateObject("Excel.Application")
objEXL.DisplayAlerts=False
For Each f In WScript.Arguments
objEXL.WorkBooks.Open f
For Each ws In objEXL.ActiveWorkBook.Worksheets
If ws.UsedRange.Rows.Count<>1 and ws.UsedRange.Columns.Count<>1 and ws.Cells(1,1)<>"" Then
ws.SaveAs f & "." & ws.Name & ".csv", 6
End If
Next
objEXL.ActiveWorkBook.Close
Next
objEXL.Quit
WScript.Quit
コードをメモ帳にコピペ 任意の名前に拡張子 .vbsを加え
文字コード UTF-16LE で任意の場所(デスクトップ)に保存してください
出来たファイルアイコンにブックをドロップするとブックの各シートをCSV形式でファイル出力します
(A1セルに値がある事が条件になります)
出来たCSVファイルを新規ブックのテキストファイルインポートウィザードでシートへ インポートしてみてください
(インポート前に列の書式設定は忘れずに)
No.10
- 回答日時:
こんばんは #7です
goomania様が既に回答されておりますが、#7他でご質問者様はcsv形式のデータについて触れていないようですので補足いたします
想像の範疇ではありますが
現状:古くから積み重ねたxlsブックを開いて 追加データを手作業で書き込み保存する 様な手順の処理をされているように思います
csvデータの使い方として
①作業をするブック(データは入っていない)(常に新規ブックでも良い)
②作業ブックにcsvファイルのデータを読込
③追加データを手作業で書き込みなどの処理をして
④csvファイルにデータを書き込み(csv形式で保存)
⑤作業をするブックのデータを保存せずに閉じる(問題回避の為BackUp)
(常に新規ブックなら④で保存しているのでそのまま閉じる)
ざっくりメリット
作業用ブックのサイズは大きくなりにくい
csvファイルはテキストなのでサイズはxlsブックより小さく開く処理時間が早い
Excelの破損や不具合からデータを守れる
!常に新規ブックの場合、後に記す書式設定の問題が生じます。
独自の入力支援やマクロなどの自動処理を作業ブックに書き使う事が難しくなります(当然ですね)
懸念
文字コードの問題(文字化け)
数式の場合、解が値になります
Excelの書式により表示形式が変更されてします
データファイルの管理が必要
問題についてはExcelで編集されcsvファイルにするためリスクは低いです
(csvデータ抽出シートの各列で書式設定「日付・通貨・文字列・その他」をあらかじめ設定しておく)
2002の場合テキストファイルインポートウィザードがあったと思います
No.9
- 回答日時:
No.8です。
>はい、ファイルの拡張子は.xlsなのでxls形式のエクセルファイル、ということになると思います。
>当方では顧客からの受信メールの情報を、顧客ファイルに手作業でコピペしています。
という補足説明をいただいたので、CSVデータ利用を阻害するような他のシステムはないことが判りました。
であれば、とりあえず、現状のxls形式データを読込して、一度「CSV形式で保存してみる」という方法を試してみたらいかがでしょうか?
つまり、元データのCSV形式のコピーを作成するイメージです。
元データはxls形式なので、CSV形式で保存しても、保存先の容量に余裕のない場合を除き、元データには何ら影響を与えないと思いますが・・・
CSV形式にすることで、データサイズが小さくなり、読込・保存の時間も短縮できるようであれば、利用する意味があると思います。
但し、CSVデータは、EXCELの「開く」メニューからファイル指定して読込すると「0001」というデータがあった場合、頭の0が飛んで「1」になってしまいます。
あくまでも、テキストファイルの取込みとしてインポートボタンを押し、カンマ区切りデータとして取込みする必要があります。
読込時間短縮にこたわるなら「CSV取込みマクロ」作成してボタン化しておくことも必要かも知れません。
なお、CSVデータにすることで、データサイズの問題、読込保存時間の問題が仮に僅かに改善したとしても、他の回答者さんも指摘されているとおり、セキュリティの課題は残ったままになってしまいます。
ご回答ありがとうございます。
改めて当該の顧客名簿ファイル xlsファイルの処理にかかる時間を計測してみました。
xls版
ファイルオープン(ロード) 約1分35秒(95秒)
ファイルクローズ(同時にセーブ) 約0分13秒
上記ファイルにはいくつかシートがあるが、その中で最もデータ量が多く顧客名簿として使っているシートのみをCSV(カンマ区切り型)ファイル化を試行しました
csv版
ファイルオープン(ロード) 約2分28秒(148秒)
ファイルセーブ 約0分10秒
ファイル容量は
xls版 約1.7MB
csv版 約0.63MB
xls版とcsv版を比較すると
ファイルオープンはxls版よりもcsv版の方が1.55倍、時間がかかる
セーブはcsv版の方が約0.77%に時間短縮できた
ファイル容量はcsv版の方が約37%にスリム化できた
これだけ見ると、長短あってどちらが良いとは言い切れないようですね。
No.8
- 回答日時:
ご質問の内容で疑問な点が4点あります。
1つ目の疑問は、既に他の回答者さんからも指摘がありましたが、質問にご記載のEXCELのバージョンが正しいとするとWindows10上でEXCEL2002を動かしているいることになります。
以下URLのとおり、この組合せは正常に動作しない可能性があります。何らかの手当をおこなってWindows10上で使用可能な状態にしているということでしょうか?
https://answers.microsoft.com/ja-jp/msoffice/for …
https://mbp-japan.com/saga/pc-pro/column/4010173/
2つ目の疑問は、収録内容がアクセス日時、IPアドレス、ユーザーエージェント、氏名(ニックネームの場合もある)、メールアドレスなどだとすると、このデータを人手で入力して作成しているとはとても思えません。どのようにして作成しているデータなのでしょうか?
3つ目の疑問は
>顧客はネット経由でこちら側にアクセスしてきますので・・・・・
ということは、この顧客データを処理するPCはインターネットに接続されているのでしょうか?
4つ目の疑問は読込、保存を行っているファイル形式についてです。1つ目の疑問のとおり、xlsx形式ファイルは正常に動作しないと考えられるので、xls形式のファイルで読込・保存をおこなっているという理解でよろしいでしょうか?
仮に、ファイル形式がxls形式だとすると、そもそもxlsxファイルには圧縮機能があり、ファイルサイズを小さくできるので、そのメリットが享受できないという点も不利になっています。ただ、Qchan1962さんの回答にもありますが、CSV形式での読込・保存にするという手はあると思います。
アクセス日時、IPアドレス、ユーザーエージェント、氏名(ニックネームの場合もある)、メールアドレス、希望商品名などを記録していて4500行程度で17MBに達しているようです。
これをCSV形式にすればファイル容量を軽減できる可能性があります。項目数、収録文字数にもよりますが、当方の経験で言えば、10項目、57000行程度の顧客データを収録したCSVデータは7MB強でした。
これをWin10(32bit)、CPU2.20GHz、メモリ6GB、EXCEL2010のPCで処理した経験があります。このとき、読込時間は十数秒、保存時間は5秒程度でした。
とはいえ、2つ目の疑問で記載したとおり、何らかのシステムで元データが作成されており、そこに、顧客との接触履歴、商品配送履歴、属性情報等を付加していく方式の場合、元データを作成するシステムを変更しない限り、CSV形式への変更は困難だということになってしまいます。
また、1つ目の疑問で記載したとおり、Windows10とEXCEL2002の組合せはMicrosoftのサポート外ですので、Qchan1962さんも指摘されておられますが、仮に、3つ目の疑問であるインターに接続されているのだとすると、セキュリティの問題もあります。
従って、
(1)読込・保存に想定以上の時間を要する
(2)常に不安があったが、遂にデータに不具合が発生し、読込エラーが出て修復不能になった
(3)セキュリティ上の問題が発生し、顧客データが外部に流出したかも知れない
というような問題が万一発生したとしても、全て「自己責任」ということになってしまうと思います。
決してMicrosoftの回し者ではありませんが、利用環境から再考するという選択肢もあるのではないかと思います。
ご回答ありがとうございます。
>以下URLのとおり、この組合せは正常に動作しない可能性があります。何らかの手当をおこなってWindows10上で使用可能な状態にしているということでしょうか?
ご提示のURL先では
「xlsx形式のファイルが扱えない」
旨の事を言っていますが、私のエクセル2002で扱っているファイルは拡張子は
「.xls」
となっています。ファイルのセーブ、ロードは問題なく、関数、その他の計算も問題なく行えます。問題なのは
「17MBのファイルのセーブロードに時間がかかるので、
やきもきしていること」
です。
というか、私が使っているこのエクセル2002ですが、エクセル2002だけではなくワード、その他のオフィスソフト群(互換ソフトではなく正規のMS社のオフィスソフト群)も、リリース以来、ずっと問題なく使用しております。
>2つ目の疑問は、
(略)
このデータを人手で入力して作成しているとはとても思えません。どのようにして作成しているデータなのでしょうか?
顧客ファイルを作成開始以来、ずっと人力で行っております。毎日の積み重ねが17MBのファイル容量なのです。
>3つ目の疑問は(略)この顧客データを処理するPCはインターネットに接続されているのでしょうか?
はい
>4つ目の疑問は(略)xls形式のファイルで読込・保存をおこなっているという理解でよろしいでしょうか?
はい、ファイルの拡張子は.xlsなのでxls形式のエクセルファイル、ということになると思います。
>とはいえ、2つ目の疑問で記載したとおり、何らかのシステムで元データが作成されており、そこに、顧客との接触履歴、商品配送履歴、属性情報等を付加していく方式の場合、元データを作成するシステムを変更しない限り、CSV形式への変更は困難だということになってしまいます。
えーと
Qネットに接続されていますか?
Aはい、ネットに接続されています。
という質問回答をもってして
常時ネット接続、即ちすべての履歴が自動記録される
という意味ではありません。
もちろん、世の中の99.999%の職場では上記の「常時接続、自動記録」の意味でしょうが、当方では顧客からの受信メールの情報を、顧客ファイルに手作業でコピペしています。
その数年間の集積が「17MB、約4500行のxlsファイル」です。
No.7
- 回答日時:
こんにちは
>ファイルのロード、セーブの時間を短縮するにはどうしたらいいでしょうか?
Excelに絞って考えるにデータとして扱うのであればcsvデータにして入出力すれば良いように思います(少しは良くなるのではと・)
余計なお世話かも知れませんが、顧客データ(アクセス履歴)等を
サポートの切れたExcelなどで扱うのはセキュリティーなどの側面からも
見直した方が良いのではないかと思います
Officeを更新した方が良いと言っているわけではありません
昔と違って多くのサービスや特化したソフト、ツールがあり、選択種が増えていますので 検討するタイミングなのではないでしょうか・・
No.5
- 回答日時:
別のPCを使いネット経由でBookを開くと同じ結果なのでしょうか?
例えばExcelが最新版に近いPCで試せるとかで、結果として早ければ2002が合わないのかも?
若しくは2021とかの打ち間違いですかね?
もし2002が正しければ扱えるのは6万行位まででしょうから、2007以降では大丈夫でもこちらではダメって事もあります。
若しくはすでに6万行に近づいているとか。
なのでデータベースソフト導入への変更が必要ではないかと。
ご回答ありがとうございます。
>若しくは2021とかの打ち間違いですかね?
打ち間違いではありません。Excel2002版です。
常に最新版をお使いの方からすれば
「2002年版、って今から20年も前だぜ!
2002年版のエクセルって、関数なんて使えるのか?
足し算、引き算しか使えないんじゃないの!」
って思われるかもしれませんが、諸般の事情があって2002年版を使っております。
>もし2002が正しければ扱えるのは6万行位まででしょうから、
桁ってのが何を指すのかわかりませんが、もしも
1シート内の行数の上限を指すのであれば、
ご指摘の通り、上限は65536行です
最大カラムはIV(256カラム目)です
データの件数は約4500行分を使っています。
最大行数65535行の10%にも満たないですし、
データシートに載せられる余裕は充分あると思うんですけどね。。。
No.4
- 回答日時:
アクセス日時が古いものは別のファイルにする、は良く採られる手法です。
ご回答ありがとうございます。
>アクセス日時が古いものは別のファイルにする、は良く採られる手法です
なるほど、そういう方法もありますね。
でも10年前の客からの連絡もあります。
よって
「最近注文の無い客なので、別ファイルにする」
という手法が仕事の進め方に合致しているのかどうかが
判断が難しいところです。
Aファイル「一定期間内にアクセス、注文のあった客データのみで
顧客検索運用をする」
Bファイル「一定期間、アクセス、注文の無い客のデータは別ファイルにする」
これで、ファイル自体は軽く動かせるとしましょう。
では、昔の客からアクセスがあったとしましょう。
上記のようにファイルを分けてしまうと、結局は2ファイルに対して検索をしなくてはなりません。
これではあまりメリットは感じられませんね・・・
回答者様、あるいはこれを見ている方は
「何が問題があるの? 客からアクセスがあったらAファイルを検索して、データ登録する。
一定期間(一か月とか一年とか)経過したら、客のアクセス状況や購入頻度に応じて客をA,Bファイルに振り分ける。
こんな運用、どこだってやっている王道的な運用だよ!」
と思われるかもしれません。
でもこの顧客名簿には客からのアクセス結果だけではなく、こちら側の対応の記録も載っています。
中には
「超ブラック客なので、こちらからの応対は一切するな」
という客もあります。
もちろん、こういう超ブラック客からアクセスがあった場合はそれに応じた対応をします。
こういう運用なので、
「最近、アクセスがない死に客なので別ファイルに・・・」
とすると、
「しまった! 10年音沙汰がなかった超ブラック客に資料送付してしまった!!
顧客ファイルをAファイル,Bファイルに分離するからこんなことになってしまうのだ!
責任者、出て来い!」
ってなことになります。
そうなったら困りますよね。
というわけなのです。
No.2
- 回答日時:
17MBは、エクセルとしては小さなサイズですが、40秒もかかるかなあ。
ちょっと謎だけどPCのスペックが低いのでは?ファイルがネットワークに存在してLANのスペックが低いのかも。前者と後者で対応は変わるけど、思いつく対応策を列挙しますか。1.機種を最新型に変える。
2.HDDをSSDに変える。
3.メモリを16GBに増やす。
4.エクセルのバージョンを最新にする。
5.エクセルをGoogleスプレッドシートまたは軽い互換ソフトに変える。
6.ファイルをローカルに置く。
7.LANを更新する。
8.ファイルサーバーを最新機種に変える。
(36) 【エクセルだけ、は時代遅れ?】ExcelとGoogleスプレッドシートのプロが「違い」や「使い方」をご紹介します。 - YouTube
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- その他(ソフトウェア) 現在と過去の顧客名簿、新規・解約・更新など作りたいのですが「やよいの顧客管理」なら簡単に扱えますか? 1 2022/05/18 10:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- 事務・総務 事務の方教えてください。未経験なのですが、補助の仕事って難しいですか? やはり責任重大ですか? 仕事 2 2023/08/20 13:38
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで「3次元配列」表の...
-
VBA リストボックス反映できない
-
<新設税理士事務所です>ミロ...
-
顧客データと請求書、売上帳を...
-
現在、日興証券で重大なトラブ...
-
読み取ったQRコード/バーコード...
-
国内線航空券をJALのアプリにて...
-
スーパー(ヤオコーでした)の...
-
筆まめのFWAファイルを開く方法
-
ANAの2次元バーコードがスマホ...
-
コンビニ決済の用紙で支払いの...
-
PayPay でバーコード支払いを行...
-
EXCELでバーコードを作成すると...
-
エクセル バーコード作成で他の...
-
Excelでバーコードリーダーで読...
-
レジの会計ミス
-
バーコードってダブらない?
-
ガラケーでQRコードを読み込み...
-
バーコードコントロールが印刷...
-
レシートにバーコード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで「3次元配列」表の...
-
顧客CDのCDって?
-
<新設税理士事務所です>ミロ...
-
スプレッドシートの関数につい...
-
エクセルの数式で教えてください。
-
VBA リストボックス反映できない
-
VBA。リストボックスの値を別の...
-
エクセルで顧客の継続率
-
エクセルVBA テキストボックス検索
-
Excelの集計をWordで差し込み印...
-
アクセスでのデータ抽出方法
-
EXCELシート内の数字での並び替...
-
Excelを使った顧客データと受注...
-
エクセルで並び替えするとハイ...
-
データ型が一致しない?
-
装置の製作会社でソフト開発を...
-
Excel 指定した固有番号で、複...
-
顧客名簿管理、郵便振込取扱票...
-
【エクセル】TextBoxの数値の入...
-
SQLでリストビューに読み込...
おすすめ情報
質問文には「顧客名簿」と記載してあります
顧客はネット経由でこちら側にアクセスしてきますので、そのたびに
顧客(見込み客含む)の
アクセス日時、
IPアドレス、
ユーザーエージェント、
氏名(ニックネームの場合もある)
メールアドレス
希望商品名
などを記録していきます。
もちろん、
商品詳細情報を要求してから購入検討するような購買意欲のある客、
購入意欲の全くない冷やかしの客、
同業他社が偽名を使って探りを入れてくる偽客
間違ってアクセスした者
などいますが、それらも全部記録します。
また、リピート客であっても、IPアドレス、メルアドなどの遍歴を確認するために、全部、毎回全項目を記録します。
よって「顧客名簿」よりも「アクセス履歴」と表示した方が
IT、パソコンに詳しい方にはフィットしたかもしれません。
とにかく、この情報を記録したエクセルファイルが大きくなってきて困っています
なお、人様に回答をお願いする身でありながら僭越ではございますが、
回答される場合は、あまり不適当な文言はおつかいになられませんようにお願いいたします。