• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ブックを表示せずにコピー(ExcelVBA))

ExcelVBAでのブックの転記方法と画面描画のチカチカ問題

このQ&Aのポイント
  • ExcelVBAを使用して、転記元エクセルの特定のセルの値を転記先エクセルの特定のセルに貼り付ける方法について質問があります。また、画面描画時に表示されるチカチカの問題についても解決方法を教えてください。
  • 質問者は、転記元エクセルを開いていない状態で転記を行いたいと考えています。画面描画の問題を解決するために、Application.ScreenUpdating = Falseを設定していますが、それでもチカチカしてしまいます。
  • 質問者は、チカチカの問題を解決するために何をすれば良いか教えて欲しいとしています。現在のコードには、転記元エクセルのオブジェクトの作成や、指定のセルのコピー・貼り付けの処理が含まれています。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

値で貼り付けたいなら、以下でどうでしょう 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

rufas
質問者

お礼

ありがとうございます。 これなら処理時間も早く、チカチカしませんでした。 しかしどうして ScreenUpdating = False 入れてもチカチカしたんでしょう…

その他の回答 (2)

回答No.3

開かないで読んではどうですか? 詳しい使い方はわからないんですが、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

rufas
質問者

お礼

ありがとうございます。 そうゆう方法もあるのですね。 ExecuteExcel4Macro これはどのエクセルのバージョンでもサポートされているかどうかが気になりますね。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>とにかくチカチカさせたくないのですが、 単一のセルのコピーとペーストを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

rufas
質問者

補足

ありがとうございます。 すいません。質問用にコードを簡単にしすぎてしまいました。 本当は連続していないセルをコピーして、 連続していないセルに貼り付けるので、 まとめて1回でコピーは出来ないのかなぁと思いました。 わからないですが…

関連するQ&A