- PR -

Excel起動時、ブックがCloseしてしまう

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-10-31 15:00
引用:

さくらさんの書き込み (2005-10-31 14:29) より:

じゃんぬねっとさんのコードですと、マクロが実行されてブックのClose、ExcelのQuitとも正常に行われることを確認しました。
が、閉じてしまっては困るので、マクロを有効にした状態で開きっぱなしにしておきたいのですが…


さくらさんの意図が私には伝わってなかったようです、申し訳ありません。
ユーザーが手動で閉じるのであれば、参照カウントの解放だけを行えば良いです。

コード:

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click    
        Dim xlApp As Excel.Application

        Try
            xlApp = New Excel.Application()
            xlApp.DisplayAlerts = False
            xlApp.Visible = True

            Dim xlBooks As Excel.Workbooks = xlApp.Workbooks

            Try
                Dim xlBook As Excel.Workbook = xlBooks.Open("C:\マクロ付き稼動報告書.xls")

                Try
                    xlApp.Run("Sheet_02.Auto_Open")
                Finally
                    If Not xlBook Is Nothing Then
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)
                    End If
                End Try
            Finally
                If Not xlBooks Is Nothing Then
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks)
                End If
            End Try
        Finally
            If Not xlApp Is Nothing Then
                System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
            End If
        End Try
    End Sub


_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
さくら
常連さん
会議室デビュー日: 2005/09/12
投稿数: 31
投稿日時: 2005-11-01 12:58
じゃんぬねっとさん、度々ありがとうございます。
お返事が遅くなってすみません。

提示していただいたコード、OKでした。
マクロ、動きました。ブックも閉じず、手動でのExcel終了も問題なくできました。

が、一つ問題が…

メインとなる(例示したソースでは省きましたが)データの書き出しとマクロ処理の間、開いたブックに値が書き込まれて動いているのが見えるため、最初xlApp.Visible=Falseにしておき、マクロ起動後にVisible=Trueにセットして完成後のブックを表示したいのです。
ところが、xlApp.RunしたあとにxlApp.Visible=Trueにセットすると、Excelの表示がおかしいのです。
Excelは起動して、画面の枠(?)は出るのですが、メニューなどが出ていないのです。
メニューは触ると出てくるので、画面のリフレッシュがうまく効いていないような感じを受けるのですが、そんなふうにはならないでしょうか?
xlApp.Runを外すとちゃんと表示されます。
もちろん、Excel単体でマクロを起動しても(Auto_Openなのでブックを開けば自動で走りますが)問題はないようです。

だんだん混乱してきました…
さくら
常連さん
会議室デビュー日: 2005/09/12
投稿数: 31
投稿日時: 2005-11-01 14:54
自己レスです。

引用:

ところが、xlApp.RunしたあとにxlApp.Visible=Trueにセットすると、Excelの表示がおかしいのです。
Excelは起動して、画面の枠(?)は出るのですが、メニューなどが出ていないのです。
メニューは触ると出てくるので、画面のリフレッシュがうまく効いていないような感じを受けるのですが、そんなふうにはならないでしょうか?



この件、解決しました。
どうやらこちらはExcelのバグだったようです。
マクロの中で自分のシートをSaveしているのですが、Visible=Falseの状態でSaveしてVisible=Trueにしたところが問題だったようです。
下記で解決できました。
http://support.microsoft.com/default.aspx?scid=kb;ja;187745

じゃんぬねっとさん、長らくのお付き合いどうもありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)