Home > PC
まやろぐ
Excel VBA Findメソッド奮闘中
シゴトで新しいExceVBAを書くことになり、他のExcelファイル内から指定した文字列を含むセルを全て選択状態にするマクロを作っているのですが…うまくいきませんorz
同一ブック内なら問題なく動く上、他のブック内の処理でも数字に関しては思ったとおりの動きをしてくれるのに、なぜか文字列に対してはFindメソッドが言うことを聞いてくれません。(´・ω・`)
コードは以下のとおり。
わかる人誰かたすけてクダサイ… orz
文字列の置換処理
シゴトでとあるファイル中の文字を置換する必要があったのですが、テキストエディタでファイルの最後まで自動的に置換処理をさせようとすると、CPU使用率100%状態が長時間続くため中止しました。
代わりにExcelVBAでファイルを読み込み、置換させてやると大して負荷かかることもなく一瞬で終わりました。
対象のファイルの行数が5万行もあり、容量が大きかったからなのかもしれませんが…
負荷の違いは画面描画の有無の違いなのかしら。
他のことに使っていたExcelVBAがそのまま流用できたのですごく楽できました。
以下は置換に使ったMS Excelのコード。
他のことにも流用できると思うので覚え書き。
追記:2007-07-16 12:55:53 JST
トローンさんに教えてもらったけどPerlを使った方がスクリプト自体は簡単なものになりますね。
VBAだとムダな改行とコメントを入れて100行近くになったけど、Perlだとわずか10行程度で同じ処理をできる模様。
トローンさんに教えてもらった文そのまま下の方に追記しました。
Excel2007覚え書き
マクロの動作にも今までのバージョンと違いあるみたい。
CheckBox1.Value = 1 でチェックつけられるのに
If Me.CheckBox1.Value = 1 Then ではだめで
If Me.CheckBox1.Value = 1 Or CheckBox1.Value = True Then にしないといけないみたい。
○.×時間 表記から ○時間×分 表記に変換するマクロを頼まれ作った時に偶然判明しました。
以下は実際のコード。
ヘタレだけど覚え書きなので。
最終更新日時:2007-07-13 02:04:40 JST
MS Excel 2007 での問題点
MS Excel 2007でファイルを開いた時だけ画面描画もまともにできないくらい重くなるファイルに出会いました。
きっかけは会社の人から「新しいPCでこのファイルを開くと重くてシゴトにならないんだけど、どうにかならない?」と相談を受けたこと。
ファイル容量10MBもあるXLSファイルなのでその時点で異常なんですが、それでもExcel 2002,2003では軽快に動作します。
しかし2007で開こうとすると開くだけで1分近くビジー状態になる上に、メモリ使用量500M超になります。
さらにひどいのはセルの移動をしたりマウスで画面をスクロールさせる度に20秒ほどビジー状態になり画面表示もされなくなること。
ちなみにファイルの内容は設備の点検記録用紙で、A4サイズのものを縦に45ページ分ほど並べてあり3500行ほどあるファイルです。
数式もファイルのリンクも使われていないし、画像を大量に貼り付けてあるわけでもないのになぜそんなことになるのやらさっぱりわからないです。
ムダと思いながらもExcel2007の設定をいじり、自動計算やエラーチェックを止めたりしてみたけどやはり変化ナシ。
困った時のグーグル頼みということで調べてみると、いくつか関係ありそうな記事ハッケン。
まだ買いではなさそう : パソコンとアプリケーションの徒然日記
このサイトに書かれている症状はグラフ表示が重いということですが、諦めるしかないみたいな返答。(´・ω・`)
メモリ使用量がおかしい理由はMSDN Japan内にある
Excel 2007 におけるパフォーマンスの改善
このページに書かれている以下のことが原因かな?
Home > PC
