|
▼kohji さん:
回答ありがとうございます。
ご提示の方法を参考に下記のように記述したらうまくいきました。
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"
で、また疑問が出てきたので、よろしければもう少しおつきあいを・・。
Set rst = Nothing
xlsWkb.Close True: Set xlsWkb = Nothing
xlsApp.Quit: Set xlsApp = Nothing
この部分は記述すると、開いたファイルが閉じる動きをするので、不要なんですよね?
Close Quit の意味はなんとなくわかるのですが、Nothingの意味がよく理解できていないので、全部不要なのか、一部を記述したほうがよいのか、いまひとつ分かりません。
VBAの本などを見ると、 Close と Nothing はセットで使用されているようです。
ということは、 Set rst = Nothing は 上のほうにある rst.Close とセットなので、残したほうがいいのでしょうか?
>上記 Excelを閉じていますが
>これをこのまま利用すればどうかな?
>
>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
>xlsApp.UserControl = True
>xlsApp.Visible = True
>
>AppActivate "Microsoft Excel"
>
>みたいな感じで…
>検証はしてないですが…
|
|