いつもお世話になってます。
以下のプログラムで外部データの更新を入れたのですがうまく作動しません。
Dim sh As Worksheet
Dim lr As Long
Dim tlr As Long
For Each sh In Worksheets
If sh.Name Like "*D" Then
sh.Select
Selection.QueryTable.Refresh
End If
Next
For Each sh In Worksheets
If sh.Name Like "*D" Then
lr = sh.Cells(Rows.Count, 5).End(xlUp).Row
sh.Rows("1:" & lr).Copy
tlr = Sheets("統合データ").Cells(Rows.Count, 5).End(xlUp).Row
Sheets("統合データ").Range("A" & tlr + 1).PasteSpecial _
Paste:=xlPasteValuesAndNumberFormats
Application.CutCopyMode = False
End If
Next
プログラムの内容としては
(1)末尾が"D "のシートのデータを更新する(これらのシートは外部データを取込んでいます)
(2)"*D"シートのデータを全て"統合データ"シートに上から順に貼り付ける
ですが、上のプログラムだともとあるデータを貼り付けてからデータを更新しています。更新後のデータを貼り付けるにはどのようにすればよいでしょうか。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちは。
KenKen_SP です。QueryTable はディフォルトでは非同期ですからね...更新前にどんどん先へ
コードを実行してしまいます。同期させたいなら、BackgroundQuery プロパティー
を False にしてください。
それから、Worksheets コレクションで同一のものを2度ループさせるさせる
のは冗長なので、一回で済ませましょう。
こんな感じでどうですか?
Sub SampleProc()
Dim Sh As Worksheet
Dim QT As QueryTable
Dim lSrcLastRow As Long
Dim lDstLastRow As Long
For Each Sh In ThisWorkbook.Worksheets
If Sh.Name Like "*D" Then
For Each QT In Sh.QueryTables
' 更新を待機するためには BackgroundQuery = True にします
QT.BackgroundQuery = False
QT.Refresh
Next
' データコピー
lSrcLastRow = Sh.Cells(Rows.Count, "E").End(xlUp).Row
Sh.Rows("1:" & CStr(lSrcLastRow)).Copy
' データペースト
With ThisWorkbook.Sheets("統合データ")
lDstLastRow = .Cells(Rows.Count, "E").End(xlUp).Row
.Rows(lDstLastRow + 1).PasteSpecial _
Paste:=xlPasteValuesAndNumberFormats
End With
End If
Next
Application.CutCopyMode = False
End Sub
KenKen_SPさん、いつもありがとうございます。backgroundqueryでうまくいきました。あとシンプルなコードも参考になりました。ありがとうございます。
No.1
- 回答日時:
こんばんは。
細かい部分はみていませんが、
>sh.Select
>Selection.QueryTable.Refresh
ここに無理がありますね。
Selection は、シートのことですから、そのままでは、実行できません。
そこに、正しいRange オブジェクトが入れば動きますが、そう上手くは行きませんから、
その二行は、
sh.QueryTables(1).Refresh
(QueryTable が、そのシートの中で一つの場合)
となるはずです。
こちらは、試していないので分からないのですが、Refreshした時のインポートのタイムラグ(数秒)があるので、そのままマクロが次に実行していかないか、ちょっと不安です。Wait を入れたほうが無難かもしれません。それだけは、やってみないと分からないのです。
Wendy02さんありがとうございます。試してみたところうまくいきました。querftable.refreshの使い方参考になりました。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
これが怖いの自分だけ?というものありますか?
人によって怖いもの(恐怖症)ありませんか? 怖いものには、怖くなったきっかけやエピソードがあって聞いてみるとそんな感覚もあるのかと新しい発見があって面白いです。
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
WebのデータをとりこむExcelマクロのエラーについて
Excel(エクセル)
-
外部データを取り込むマクロ
Access(アクセス)
-
-
4
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
多量のSUMIF式を軽くしたい
-
[C言語] コメント文字列を無視...
-
特定のデータの抽出方法を教え...
-
S9タイプからXタイプにデータ...
-
ユーザーフォームのテキストボ...
-
プログラミング python pandas ...
-
DataGridViewのデータの引渡し...
-
C# ソケット通信でデータ受信時...
-
VBAを使ってOutlookメール本文...
-
VBA 空白セルを削除ではない方...
-
ActiveReportについて
-
VBにおいてフォーム間の変数の...
-
言語処理100本ノック 2020 第6...
-
データストラクチャー
-
アクセス2000で画像データ...
-
カンマからスラッシュに
-
バーコードリーダーの読込デー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
配列でデータが入っている要素...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
カンマからスラッシュに
-
VBA 円グラフ 特定条件に一致し...
-
特定のデータの抽出方法を教え...
-
EXCELVBAでSQLserverからデータ...
-
CString型の文字列連結について
-
[C言語] コメント文字列を無視...
-
エクセルで2つの時系列のデー...
-
多量のSUMIF式を軽くしたい
-
この行は既に別のテーブルに属...
-
ACCESSからEXCELに出力する際、...
-
Accessで該当データにフラグを...
-
ユーザーフォームのテキストボ...
-
モジュラス103の算出方法について
-
S9タイプからXタイプにデータ...
-
ブレーカー落ちで壊れたりしな...
おすすめ情報