Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2812 / 9994 ←次へ | 前へ→

【10449】Re:エクセルファイルにデータを出力
質問  あおぎん  - 08/7/1(火) 17:18 -

引用なし
パスワード
   ▼小僧 さん:
回答ありがとうございます。
お礼が遅れて申し訳ありません。


>Workbook.Close は Excel のメニューから
>[ファイル] → [閉じる] の動作、
>
>Application.Quit は Excel のメニューから
>[ファイル] → [終了] の動作と同意です。
>
>
>Set xx = Nothing については
>以前に同じ様な事を回答した事があるので
>ご参考までに紹介させて頂きます。
>
>h tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=9646;id=access

上記確認しました。
いろいろな考えがあるようですが、開けたドアは閉じてみたほうがいいのかな・・?。
参考になりました。
ありがとうございます。


>
>>  Set qdf = DB.QueryDefs("Q_社保エクスポート用")
>>  qdf.SQL = str
>>  qdf.Close
>>  
>>  'レコードセットを開く
>>  Set rst = DB.OpenRecordset("Q_社保エクスポート用")
>
>何回かレコードセットを開きなおしているようですが、
>QueryDef オブジェクトをそのまま使って
>qdf.OpenRecordset なんて使い方もできますよ。
>
>また、3回目にセットしている箇所も
>Dynaset タイプで開く必要がなさそうですので、
>1回だけ開けば問題なさそうですね。

レコードセットを開くということをいまいち理解できていないので、
上記のことがよくわかりません。
Dynaset タイプもヘルプで調べてみたんですが、どういう場合にこのタイプがいいのかまで理解できませんでした・・。
ただ、1回開けばいいとのご指摘でしたので、ご指摘を参考に次のように記述してみたら、エラーもなく実行されました。
でも、何回か試していると、なぜか、エクセルが読み取り専用で開かれたりします。
どこかおかしい記述があるんでしょうか?
ご指摘いただけたら幸いです。

  'クエリの作成
  str = str & constr & ";"
  Debug.Print str

  Set DB = CurrentDb()
  Set qdf = DB.QueryDefs("Q_社保エクスポート用")
  qdf.SQL = str
  'qdf.Close ←これを削除
  
  'レコードセットを開く
  Set rst = qdf.OpenRecordset ←これを追加
  'Set rst = DB.OpenRecordset("Q_社保エクスポート用")←これを削除
  If rst.RecordCount = 0 Then
    MsgBox "対象者がいません。", vbOKOnly, "データなし"
    rst.Close
    DB.Close
  Else
    'rst.Close ←これを削除
    'DB.Close  ←これを削除
    
    'オブジェクトの作成
    Set xlsApp = CreateObject("Excel.Application")
    
    'ファイルを開く
    MyFile = "D:\My Documents\2008\社会保険届出関連\WT_社保資格喪失.xls"
    Set xlsWkb = xlsApp.Workbooks.Open(MyFile)
    
    'Set rst = CurrentDb.OpenRecordset("Q_社保エクスポート用", dbOpenDynaset) ←これを削除
    
    xlsWkb.Worksheets("T_社保資格喪失").Range("A11.M100").ClearContents
    
    xlsWkb.Worksheets("T_社保資格喪失").Range("A11").CopyFromRecordset rst
  
  MsgBox "処理が終了しました。" & vbCr & "D:\My Documents\2008\社会保険届出関連\WT_社保資格喪失.xlsを開いて届出帳票を印刷してください。"
    
    xlsApp.UserControl = True
    xlsApp.Visible = True

    AppActivate "Microsoft Excel"


>
>> オブジェクトがないというエラーメッセージが出ます。
>
>上の方にある
>
>> xlsApp.Quit: Set xlsApp = Nothing
>
>という箇所で、変数:xlsApp への参照を切ってしまったために
>
>xlsApp.Workbooks.Open (MyFile)
>
>がうまくいってないですね。
>
>kohjiさんご指摘の通り、Excelを閉じないのが一番の回避策ですが、
>Quit を後にすればもう一度開く事もできるかと思われます。

こちらのご指摘は、時間がなくてまだ確認していません。
試してみて分からなければ、また質問させてください。

894 hits

【10445】エクセルファイルにデータを出力 あおぎん 08/6/26(木) 16:18 質問[未読]
【10446】Re:エクセルファイルにデータを出力 kohji 08/6/26(木) 17:26 回答[未読]
【10447】Re:エクセルファイルにデータを出力 あおぎん 08/6/27(金) 11:38 質問[未読]
【10448】Re:エクセルファイルにデータを出力 小僧 08/6/30(月) 11:55 回答[未読]
【10449】Re:エクセルファイルにデータを出力 あおぎん 08/7/1(火) 17:18 質問[未読]
【10450】Re:エクセルファイルにデータを出力 小僧 08/7/3(木) 11:02 回答[未読]
【10460】Re:エクセルファイルにデータを出力 あおぎん 08/7/8(火) 15:04 質問[未読]
【10468】Re:エクセルファイルにデータを出力 小僧 08/7/17(木) 10:42 回答[未読]
【10451】Re:エクセルファイルにデータを出力 neptune 08/7/3(木) 14:31 発言[未読]
【10461】Re:エクセルファイルにデータを出力 あおぎん 08/7/8(火) 15:23 お礼[未読]
【10462】Re:エクセルファイルにデータを出力 neptune 08/7/9(水) 15:18 発言[未読]

2812 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078201
(SS)C-BOARD v3.8 is Free