- ベストアンサー
ExcelVBAでのブックの転記方法と画面描画のチカチカ問題
- ExcelVBAを使用して、転記元エクセルの特定のセルの値を転記先エクセルの特定のセルに貼り付ける方法について質問があります。また、画面描画時に表示されるチカチカの問題についても解決方法を教えてください。
- 質問者は、転記元エクセルを開いていない状態で転記を行いたいと考えています。画面描画の問題を解決するために、Application.ScreenUpdating = Falseを設定していますが、それでもチカチカしてしまいます。
- 質問者は、チカチカの問題を解決するために何をすれば良いか教えて欲しいとしています。現在のコードには、転記元エクセルのオブジェクトの作成や、指定のセルのコピー・貼り付けの処理が含まれています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
値で貼り付けたいなら、以下でどうでしょう Private Sub CommandButton1_Click() Dim i as Integer Application.ScreenUpdating = False Workbooks.Open Filename:=ThisWorkbook.Path & "\" & EXCEL_NAME_MOTO Workbooks(EXCEL_NAME_SAKI).Sheets(SHEET_NAME_SAKI).Range("B1:B100").Value _ = Workbooks(EXCEL_NAME_MOTO).Sheets(SHEET_NAME_MOTO).Range("A1:A100").Value Workbooks(EXCEL_NAME_MOTO).Close False Application.ScreenUpdating = True End Sub
その他の回答 (2)
- fumufumu_2006
- ベストアンサー率66% (163/245)
開かないで読んではどうですか? 詳しい使い方はわからないんですが、Application.ExecuteExcel4Macroというのを使うと、Excelファイルを開かずにいろんな事ができるらしいです。 Private Sub CommandButton1_Click() Dim i As Integer Dim sourceSheet As String sourceSheet = "'" & ThisWorkbook.Path & "\[" & EXCEL_NAME_MOTO & "]" & SHEET_NAME_MOTO & "'!" For i = 1 To 100 Worksheets(SHEET_NAME_SAKI).Cells(i, 1) = Application.ExecuteExcel4Macro(sourceSheet & "R" & Trim(Str(i)) & "C1") Next End Sub
お礼
ありがとうございます。 そうゆう方法もあるのですね。 ExecuteExcel4Macro これはどのエクセルのバージョンでもサポートされているかどうかが気になりますね。
- hana-hana3
- ベストアンサー率31% (4940/15541)
>とにかくチカチカさせたくないのですが、 単一のセルのコピーとペーストを100回も繰り返しているからです。 FOR文の部分を変更して下さい。 1.コピー方法の変更 For i = 1 To 100 Workbooks(EXCEL_NAME_MOTO).Sheets(SHEET_NAME_MOTO).Cells(i, 1).Copy _ Workbooks(EXCEL_NAME_SAKI).Sheets(SHEET_NAME_SAKI).Cells(i, 2) Next 2.まとめて1回でコピー Workbooks(EXCEL_NAME_MOTO).Sheets(SHEET_NAME_MOTO).Range("A1:A100").Copy Workbooks(EXCEL_NAME_SAKI).Sheets(SHEET_NAME_SAKI).Cells(1, 2).PasteSpecial _ Paste:=xlValues
補足
ありがとうございます。 すいません。質問用にコードを簡単にしすぎてしまいました。 本当は連続していないセルをコピーして、 連続していないセルに貼り付けるので、 まとめて1回でコピーは出来ないのかなぁと思いました。 わからないですが…
お礼
ありがとうございます。 これなら処理時間も早く、チカチカしませんでした。 しかしどうして ScreenUpdating = False 入れてもチカチカしたんでしょう…