VB6より既に起動しているEXCELを操作するには

解決


cooldj  2005-11-11 06:08:23  No: 127524

お世話になります。

今回、VB6とACCESS2000とEXCEL2000を使用してACCESSでクエリを実行してその結果をEXCELに出力し、更にEXCEL上で編集してそれを保存するといった一連の動作をVB6フォームで作成したコマンドボタンを押すと実行されるというものを作りたいのです。とりあえずACCESSからEXCELに出力するのはできたのですが出力されたEXCEL(起動中)の編集が出来なくて悩んでます。とりあえず、ネット上で調べながらこんな感じでソースを書いてみたのですがどこがおかしいかのかさっぱり解らないのです。
どなたかご教授していただけませんでしょうか?

よろしくお願い致します。

Dim objApp As Object
Dim objbook As Object
Dim objsheet As Object
Set objApp = GetObject(, "Excel.Application")
Set objbook = objApp.ActiveWorkbook
Set objsheet = objbook.Worksheets("AA")  '←シート名
objApp.DisplayAlerts = False
            --省略--
objsheet.SaveAs "C:\Documents and Settings\hopewin\MyDocuments\AAA.xls"
objApp.Quit
Set objsheet = Nothing
Set objook = Nothing
Set objApp = Nothing

以上です。よろしくお願い致します。


もげ  2005-11-11 17:15:30  No: 127525

ぱっと見、
GetObjectでブック名(ファイル名)を明示的に指定するとか、
ActiveWorkbookに頼らないで、ブック名を明示的に指定するとか、
objApp.Workbooks("ブック名").Activate で目的のブックを
ActiveWorkbookにするようにするとか。


なな  2005-11-11 19:47:46  No: 127526

ActiveWorkbookって、危険ですよね。

>ActiveWorkbookにするようにするとか。
ActiveWorkbookにしても、別のシートをユーザが選んだら
たちまち動かなくなる。

Set MyBook = objApp.Workbooks("ブック名")

とかで、ActiveとかSelectionとかに依存しない書き方にすべきでは?


cooldj  2005-11-11 23:28:05  No: 127527

もげさん、ななさん、お返事ありがとうございます。

お返事遅くなりまして申し訳ございません。

早速、試してみたいと思います。
また、結果を報告したいと思います。


cooldj  2005-11-12 06:09:28  No: 127528

結局、下記のソースにてやりたいことができました。

みなさまありがとうございました。

Dim xlApp   As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = GetObject(, "Excel.Application")
Set xlBook = xlApp.Workbooks("AAA.xls")
Set xlSheet = xlBook.Worksheets("AAA")
xlApp.DisplayAlerts = False
xlApp.Visible = True
xlApp.ActiveWindow.Zoom = 75
            --省略--
xlsheet.SaveAs "C:\Documents and Settings\hopewin\MyDocuments\AAA.xls"
xlApp.Quit
Set objsheet = Nothing
Set objook = Nothing
Set objApp = Nothing


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加