
No.4ベストアンサー
- 回答日時:
>ADOの処理が終わるのを待って次の処理へ進む方法はないものでしょうか?
【クエリの更新が終わるまで次の処理に移行しない】
ということであれば、
.Refresh BackgroundQuery:=True
としている部分を、
.Refresh BackgroundQuery:=False
とすれば良さそうに思うのですが…?
ご参考まで。
ありがとうございました。
.Refresh BackgroundQuery:=False
で、クエリの更新を待つようになりました。
今後のこともあるので、ADOで作り直してみようと思います。
No.3
- 回答日時:
こんにちは。
ソースを見る限りは、ADO ではなくて、QueryTable から、ODBCをお使いのようですが、Table を作った後に、Cells.Copy では、かなり無理があるようです。
最初の行で、↓を宣言しているようですが、False では?
Application.ScreenUpdating = True
この部分もへんですね。
Cells.Select
Selection.Delete Shift:=xlUp
単に、
Cells.Clear
で良いように思います。
>データベースの内容を取り終わる前に別のワークブックへコピーする処理が始まってしまい困っています。
今の段階で、終了を確認していないから、時間差を置いたり止めたりする方法は、感心しません。QueryTable 自体の問題ではないでしょうか。本格的に、ADOでやってみたらいかがですか?
当面、
Application.Wait Now + TimeSerial(0, 0, 30) '30秒間、ウェイトする
こんなコマンドもありますが……。
この回答への補足
ご指摘ありがとうございました。
WEBでADOのサンプルを見つけてそれを参考に作っていたのですが、そもそもADOではなかったのですね。すみませんでした。
まだわからないことだらけなもので、もう1度ADOのやり方を勉強してみます><
ウェイトの方法まで載せていただきありがとうございました^^
No.2
- 回答日時:
うーん・・・肝心の処理進行のステートメント(もしくは処理中枢部分)が書かれていないような・・・^^;
・データ抽出処理
・コピー処理
この二つはステートメントを分けていますか?
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
sub 処理実行ステートメント()
Call データ抽出処理ステートメント
Call コピー処理ステートメント
end sub
sub データ抽出処理ステートメント()
~データ抽出処理~
end sub
sub コピー処理ステートメント()
~コピー処理~
end sub
のようになっていますか?
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
この回答への補足
ご指摘ありがとうございました。
データ抽出処理とコピー処理の二つにステートメントを分けていませんでした。処理中枢部分といっても先ほど載せたものしかありません。あとはコピー後に保存するとかそれくらいなのですが・・・。
ステートメントを分けて以下のようにしてみましたが、やはりデータ取り出し中の状態でコピー処理が始まってしまいました。
何度も申し訳ありませんが、見ていただければ幸いです。
sub 処理実行ステートメント
call データ抽出処理ステートメント
call データコピー処理ステートメント
end sub
Sub データ抽出処理ステートメント()
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Sheets("得意先マスター").Select
Cells.Select
Selection.Delete Shift:=xlUp
Range("A1").Select
'
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AAADSN;APP=MicrosoftR Query;Trusted_Connection=Yes" _
, Destination:=Range("A1"))
.CommandText = Array( _
"SELECT *" & Chr(10) & "FROM AAA" & "DB.dbo.得意先M 得意先M")
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=True
End With
end sub
sub データコピー処理ステートメント()
Sheets("得意先マスター").Select
Cells.Select
Selection.Copy
Workbooks.Open Filename:="C:\得意先M.xls"
Windows("得意先M.xls").Activate
Sheets("得意先M").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
end sub
No.1
- 回答日時:
通常、プログラムは並行して二つの処理、ということはしません。
恐らくコーディングの問題だと思いますので、「時間をおく」よりも「ソースを書き直す」ことを強くお勧めします。
恐らく差し支えない程度にソースを載せて頂いた方が話が早いと思いますが、転記は可能でしょうか?
この回答への補足
さっそくのご回答ありがとうございました。
ソースを載せますので、気づいたことがあればご指摘下さい。
Sub toku()
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Sheets("得意先マスター").Select
Cells.Select
Selection.Delete Shift:=xlUp
Range("A1").Select
'
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AAADSN;APP=MicrosoftR Query;Trusted_Connection=Yes" _
, Destination:=Range("A1"))
.CommandText = Array( _
"SELECT *" & Chr(10) & "FROM AAA" & "DB.dbo.得意先M 得意先M")
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=True
End With
'(※
Sheets("得意先マスター").Select
Cells.Select
Selection.Copy
・
・
・
※ここで、データ取得が完了するまで待ちたいのですが・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 2 2023/03/02 18:54
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- その他(データベース) 業務用のデータベースサーバーの選び方について 4 2022/11/22 10:22
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- JavaScript Q&Aの掲示板を作成していてヤフー知恵袋やgoo質問のように質問ごとにURLを生成したい 5 2023/08/04 01:22
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) ExcelVBAの複数指定範囲の構文 2 2022/05/26 22:39
このQ&Aを見た人はこんなQ&Aも見ています
-
【ExcelVBA】クエリの更新とピボットの更新を自動化するには?
Visual Basic(VBA)
-
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
ファイルを処理中に次の処理に移ってしまうようなのですが、、
Visual Basic(VBA)
-
-
4
マクロで待機時間を作りたい
Access(アクセス)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
VBAで3秒だけ時間を止めたい
Visual Basic(VBA)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
Access サブフォームでの選択行の取得
その他(データベース)
-
9
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
10
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
11
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
12
Offsetで可視セルだけを移動したい。
Excel(エクセル)
-
13
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
14
VBAで一時中断したプログラムの再開をさせたい
Visual Basic(VBA)
-
15
vba クリップボードクリアについて教えてください
その他(プログラミング・Web制作)
-
16
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
17
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
18
accessテーブル作成クエリを実行したときにオートNo(のような)振る方法
その他(データベース)
-
19
Accessを開くと「排他モードじゃないので変更しても保存できない」との旨の表示が出てしまう。
Access(アクセス)
-
20
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
private subモジュールを他のモ...
-
【C#/Java?】try-catchでcatch...
-
どうやってもFor文を抜けてしま...
-
マクロで、次のコードへ行く前...
-
シグナル 6(SIGABRT)とは?
-
Word VBA。各マクロの間に待ち...
-
特定の名前のオートシェイプの...
-
Functionで戻り値を複数返す方法
-
特定のファイルを他のプロセス...
-
エクセルVBAでロックをかけたい
-
フォルダのアクセス権確認について
-
VBA 複数の行を高速で削除する...
-
iPhoneのニューラルエンジンっ...
-
¥マークを含むパスの処理につ...
-
For ~ Next文
-
IF文に時間(何時から何時ま...
-
ドリブン??
-
UWSCでの例外処理について
-
UWSCのTHREADについて
-
フォーカスがどこか行ってしまう
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
vbaのエラー対応(実行時エラー...
-
シグナル 6(SIGABRT)とは?
-
どう増強すべきか
-
private subモジュールを他のモ...
-
IF文に時間(何時から何時ま...
-
特定の名前のオートシェイプの...
-
Excel VBA セルの名前があるか...
-
マクロで、次のコードへ行く前...
-
ExcelのVBAで、選択したファイ...
-
特定のファイルを他のプロセス...
-
VB6にてネットワーク上にある共...
-
どうやってもFor文を抜けてしま...
-
Word VBA。各マクロの間に待ち...
-
エクセル VBAで複数セル選択時...
-
【VBA】エラー処理で別プロシー...
-
フォルダのアクセス権確認について
-
VBA For Each 〜 複数条件について
-
StatusStripの表示が更新されな...
-
【C#】Page_Loadさせない方法に...
おすすめ情報