■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#46726-0EXCEL起動の不思議TAKE2001-09-10(月) 16:56
     #46730-0RE#46726:EXCEL起動の不思議TAKE2001-09-10(月) 18:02
     #46732-0RE#46726:EXCEL起動の不思議Ikumi2001-09-10(月) 18:26
     #46733-0RE#46732:EXCEL起動の不思議Ikumi2001-09-10(月) 18:31
     #46741-0RE#46732:EXCEL起動の不思議dora2001-09-11(火) 09:27
     #46752-0RE#46741:EXCEL起動の不思議TAKE2001-09-11(火) 11:30
     #46755-0RE#46752:EXCEL起動の不思議みゃお2001-09-11(火) 13:38
     #46761-0RE#46755:EXCEL起動の不思議TAKE2001-09-11(火) 15:54
     #46770-0RE#46761:EXCEL起動の不思議みゃお2001-09-11(火) 16:54
     #46775-0RE#46770:EXCEL起動の不思議TAKE2001-09-11(火) 17:55
#46726-0
EXCEL起動の不思議
以下はEXCELをVBから起動するのですが・・・
Private Sub Command3_Click()
    '(参照設定 Microsoft Excel Object Library 8.0を追加する)
    Dim xlbook As Excel.Workbook
    Dim xlsheet As Sheets
    Set xlbook = CreateObject("Excel.sheet")
    Set xlsheet = xlbook.Worksheets
    ?xlbook.Application.Workbooks.Open filename:="C:\WINDOWS\デスクトップ\test.xls"
    ?xlbook.Application.Visible = True
End Sub

このままで実行するとEXCELは実行されますがすぐ終了されます。
でも、?と?の順番を入れ替えるとEXCELは終了されません。
なんとも不思議です。意味を知っているお方は、教えて下さい。
よろしくお願いします。

#46730-0
RE#46726:EXCEL起動の不思議
でもエクセル2000だと動くなああ。

エクセル97だと駄目?!?!
#46732-0
RE#46726:EXCEL起動の不思議
> 以下はEXCELをVBから起動するのですが・・・
> Private Sub Command3_Click()
>     '(参照設定 Microsoft Excel Object Library 8.0を追加する)
>     Dim xlbook As Excel.Workbook
>     Dim xlsheet As Sheets
>     Set xlbook = CreateObject("Excel.sheet")
>     Set xlsheet = xlbook.Worksheets
>     ?xlbook.Application.Workbooks.Open filename:="C:\WINDOWS\デスクトップ\test.xls"
>     ?xlbook.Application.Visible = True
> End Sub
> 
> このままで実行するとEXCELは実行されますがすぐ終了されます。
> でも、?と?の順番を入れ替えるとEXCELは終了されません。
> なんとも不思議です。意味を知っているお方は、教えて下さい。
> よろしくお願いします。

んー、こちらはExcel97しかないので、確かに、(1),(2)(丸付き文字は機種依存文字なので
使用を避けることにします)を入れ替えると違う動きをします。Excel起動時の画面の状態は
同じですが。

ただ、これはアプリケーションの表示のタイミングと、オブジェクトの
インスタンスの解放の問題のような気がします。
OLEオートメーションのオブジェクトは、たとえ、その変数の宣言内のオブジェクトの
インスタンスが終了しても、アプリケーションオブジェクトをQuitで終わらせた後に、
明示的にNothingを入れないとうまく解放されないことがある、という記述を
以前にどこかで見た気がします。
実際、(1),(2)の後に
  xlbook.Quit
  Set xlbook = Nothing
を記述すれば、(1),(2)が入れ替わってもきちんと終了しますし。
やはりインスタンスの問題では?

もっとも、私の場合はCreateObjectで直接Bookを開くという使い方しませんので、
この場合の詳しい動きはわかりませんが。

もし、この辺のオブジェクト変数の動きについてもっと詳しい方が
いらっしゃったら教えていただきたいですね。(Webで探しましたが
うまいこと見つからないもので・・・。)
#46733-0
RE#46732:EXCEL起動の不思議
下記の
>   xlbook.Quit
という記述は
  xlbook.Application.Quit
のまちがいです。すいません。m(_ _;)m
#46741-0
RE#46732:EXCEL起動の不思議
 はずしているかもしれませんが、以下の条件の時にExcelが終了しないようです。

 ?OSがWindows95、98、MEである
 ?セルに対して大量のレコードを書きこむ
 
 もうひとつ条件がありましたが忘れました。要するにバグです。マイクロソフトのHPにも
この現象についての報告がありました。

 もし思い当たるようならば、どのHPにあったか探してみますので返信ください。

#46752-0
RE#46741:EXCEL起動の不思議
>  はずしているかもしれませんが、以下の条件の時にExcelが終了しないようです。
> 
>  ?OSがWindows95、98、MEである
>  ?セルに対して大量のレコードを書きこむ
>  
>  もうひとつ条件がありましたが忘れました。要するにバグです。マイクロソフトのHPにも
> この現象についての報告がありました。
> 
>  もし思い当たるようならば、どのHPにあったか探してみますので返信ください。
> 

    逆ですよ。EXCELが終了してしまい困っていました。
    原因がよくわからなかったので今は以下のようにしました。

    Dim xlbook As Excel.Workbook
    Dim xlsheet As Sheets
    Set xlbook = CreateObject("Excel.sheet")
    Set xlsheet = xlbook.Worksheets
    
    xlbook.Application.Visible = True 'FalseにするとOFFICE97でうまく行きません
    xlbook.Application.Workbooks.Open filename:="C:\WINDOWS\デスクトップ\test.xls"
    xlbook.Application.Visible = False '一旦画面から隠す
    

    'ここでマクロを使い、シートの編集をしています。


    xlbook.Application.Visible = True '画面に表示する

    SET xlBook = Nothing  'Objectという名前のブックを閉じTest.xlsブックのみにする
    SET xlsheet = Nothing


    これでEXCEL97であろうと2000であろうと動くようになりました。
    ただ、EXCELが一瞬画面に現れるのが嫌ですが・・・
#46755-0
RE#46752:EXCEL起動の不思議
>     Dim xlbook As Excel.Workbook
>     Dim xlsheet As Sheets

普通は、SheetsオブジェクトじゃなくSheetオブジェクトを宣言しません?
      Dim xlSheet As Excel.Worksheet

>     Set xlbook = CreateObject("Excel.sheet")

このxlbookオブジェクトは、Applicationを呼び出すことにしか使われてませんよね。
だったら、はじめからApplication側をCreateObjectしたほうがわかりやすいと思うのですが。
(Ikumi さんもそういう風に書かれてますよね)

     Dim xlApp As Excel.Application
     Set xlApp = CreateObject("Excel.Application")
     Set xlBook = xlApp.Workbooks.Open "test.xls"
      ↑対象ブックの方を変数に代入しています。

>     ただ、EXCELが一瞬画面に現れるのが嫌ですが・・・

xlApp.WindowState = xlMinimized してから
xlApp.Visible = True            ってやると、タスクバー上にしか現れないですが
いかがでしょうか?
#46761-0
RE#46755:EXCEL起動の不思議
> >     Dim xlbook As Excel.Workbook
> >     Dim xlsheet As Sheets
> 
> 普通は、SheetsオブジェクトじゃなくSheetオブジェクトを宣言しません?
>       Dim xlSheet As Excel.Worksheet
> 
> >     Set xlbook = CreateObject("Excel.sheet")
> 
> このxlbookオブジェクトは、Applicationを呼び出すことにしか使われてませんよね。
> だったら、はじめからApplication側をCreateObjectしたほうがわかりやすいと思うのですが。
> (Ikumi さんもそういう風に書かれてますよね)
> 
>      Dim xlApp As Excel.Application
>      Set xlApp = CreateObject("Excel.Application")
>      Set xlBook = xlApp.Workbooks.Open "test.xls"
>       ↑対象ブックの方を変数に代入しています。

VBヘルプの使用例を理解せずにそのまま使用したので
そういう書き方があるのとは知りませんでした。
CreateObjectを勉強してみます。
ただ、EXCEL開いたあとでセルに文字をセットしたりとか
色々行っているのでたぶん上の宣言ではいけない気がします。
いまちょっと忙しくて試していませんが

また、わからないことがあったら
よろしくお願いします。
#46770-0
RE#46761:EXCEL起動の不思議
#訂正です。

> >      Set xlBook = xlApp.Workbooks.Open "test.xls"
→ファイル名を () でくくってください。すみません。

> ただ、EXCEL開いたあとでセルに文字をセットしたりとか
> 色々行っているのでたぶん上の宣言ではいけない気がします。

できます。まぁやってみてください。
#46775-0
RE#46770:EXCEL起動の不思議
EXCEL97でもEXCELが終了せずに正常に動くようになりました。

Dim xlApp As Excel.Application
Dim xlbook As Excel.Workbook
Dim xlsheet As Sheets
Set xlApp = CreateObject("Excel.Application")
Set xlbook = xlApp.Workbooks.Open("Test.xls")
Set xlsheet = xlbook.Worksheets
xlbook.Application.Visible = False '念のため
'*****************************
'マクロ実行
'*****************************
xlbook.Application.Visible = True
Set xlbook = Nothing
Set xlsheet = Nothing

バグと思っていたのですが
コードの書き方に問題があったようですね。
ありがとうございました。
このページと関連する記事:
#4033-2VBからエクセルの操作する方法2002-01-18(金) 17:35
#1447-32つのブックを開いてシートをコピーして終了2002-07-06(土) 18:04
#2221-1Excel出力2004-05-19(水) 17:45
#37765-0”VBフォームからExcelシートへ”便乗質問2001-01-26(金) 14:43
#118-1ExcelVBA(マクロ)の利用方法について2001-05-30(水) 11:45
#37664-0VBフォームからExcelシートへ...2001-01-25(木) 14:11
#2771-2EXCELLに出力2001-12-13(木) 04:53
#1903-0VBからExcelのマクロを呼ぶ方法1999-09-17(金) 09:38
#25166-0RE#25163:VBからのExcel操作2000-07-07(金) 12:38
#2982-0VBからExcelを起動し、新規ブックを作成したいです。1999-10-18(月) 11:33
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)