やりたいことは特定シート名の必要な列データを取り出して並び替えることです。複数ファイルがあるので最後に縦に並べ1シートにしたいです。一つのシートに4000行、20列位あります。
今のプログラムは
①ファイルを開く
②特定のシート名のシートを別ファイルにコピーして名前変更
③①と②をファイル数繰り返す
④必要な列を別シートにコピー(ここで並び替え)
⑤一つのシートにまとめる
となってます。ファイル名、シート名コピーする列名は設定シートに記載しています。
④と⑤だけだと少し遅いと感じるレベルですが、全部通すと画面真っ白でしばらく動かなくなります。
先ほど調べて画面描写をやめると早くなるという情報を得ましたので確かめてみるのですが、他に早くする方法はありますか?
そもそも考え方が間違っていて無駄な動きをしている点がありましたら教えてください。
また、列のコピー方法A列で指定するよりも①列で指定する方が早い、シートコピーよりも全データ選択して張り付けた方が早いなどありましたら教えてください
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんにちは。
直接の回答ではありませんが、
>全部通すと画面真っ白でしばらく動かなくなります。
これは、Excel 2013 ではありませんか?
たぶん、ホワイト・スクリーンとか呼ばれる、一種バグなんだろうと思っています。
海外ではかなり話題になったようですし、海外でもいろんなことを言う人がいますが、私は、直らないのではないかと思います。たぶん、マイクロソフト社は知っていることなのだろうし、
アプリのウィンドウ構造のMDIからSDIという仕組み自体を変えたところに問題があるのだろうと思います。
後は、No.2 さんのおっしゃるものに加えて
With Application
.ScreenUpdating =False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
(戻す方法は、ご自分でお調べください。)
ただ、データ型の問題は、Variant であろうが、Long 型であろうか、体感するほど大きな違いはないのかと思います。細かく言えば、マイクロソフト社が指導する、『VBAの最適化(optimization)』をご覧になればよいのですが、今どき、守っている人はどの程度いるのか怪しいです。
以下は、アーカイブとして、かろうじて残っているようですが、たぶん、どなたでも収穫はあると思います。
https://docs.microsoft.com/ja-jp/previous-versio …
マクロについては、言葉だけでははっきりしませんが、
シートそのものをコピーする手法が果たして良いのか、なんとも言えません。
あまり繰り返すようなら、シートコピーはやめたほうがよいのではないかと思うぐらいです。
ただ、誰がやっても根本的な解決はしない、ハードやOSの問題を含んでいるのかもしれません。
No.2
- 回答日時:
すべてではありませんが、影響の大きいところで以下です。
1.画面の描画更新をしない。
DIM文の次の行に、Application.ScreenUpdating = False
ENDの手前の行に、 Application.ScreenUpdating = True
2.極力selectしない。
コピーペーストするときはselectは不要です。範囲の場合でもシートの場合でもです。
3.型指定の最適化
型指定をしなかったり、variantを使ったりすると、遅くなります。
doubleも遅くなるので極力使わない。
No.1
- 回答日時:
①ファイルを開く
②必要な列を別シートにコピー(ここで並び替え)
③①と②をファイル数繰り返す
⑤一つのシートにまとめる
一つのシートにまとめてから並べ替えではないのですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
- Visual Basic(VBA) 最終行の指定について教えてください。 複数シートを1シートへまとめる下記マクロでは各シートの6行目を 1 2022/10/04 18:37
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 関数を使ってデータと一...
-
エクセルの選択範囲以外を削除...
-
EXCELのVBAでシートコピーをし...
-
エクセルのワークシートをUSBメ...
-
【Excel】数式をそのまま他のシ...
-
EXCELで別のブックから式をコピ...
-
ExcelVBAで、ユーザーフォーム...
-
エクセルVBA 1行飛ばしで転記す...
-
エクセルでシートを「移動また...
-
【VBA】コピー&複数個所のペー...
-
Excel 数式の保護をしたセルを...
-
【エクセル】プルダウン設定の...
-
VBA シートをコピー後、ボタン...
-
EXCEL VBA シートをコピーする...
-
エクセルシートを別のエクセル...
-
標準モジュール、フォームを別...
-
Excel シートに別のExcelシート...
-
【Excel VBA】シートコピー時、...
-
EXCEL2007でシートをコピーする...
-
エクセルの1シートの内容を複...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
【Excel】数式をそのまま他のシ...
-
エクセルの1シートの内容を複...
-
【VBA】コピー&複数個所のペー...
-
EXCELで別のブックから式をコピ...
-
【エクセル】プルダウン設定の...
-
Excel シートのコピーの際、ペ...
-
エクセルVBA 1行飛ばしで転記す...
-
Excel 数式の保護をしたセルを...
-
Excelの行をコピーして貼り付け...
-
エクセルのワークシートをUSBメ...
-
シートが保護されていないのに...
-
エクセルシートを別のエクセル...
-
VBA シートをコピー後、ボタン...
-
【Excel VBA】シートコピー時、...
-
Excel シートに別のExcelシート...
-
【スプレッドシートで】xlsx形...
-
PDFファイルをコピーしてエクセ...
おすすめ情報