|
分類:[.NET 全般]
よろしくお願いします。下記は過去に質問して解決した問題です。 今回はこのエクセルファイル C:\test.xlsにVBAの記述があり、ファイルオープン時にユーザーフォームを表示する様になっています。 そのときVBAのユーザーフォームとの関連か(?)よくわかりませんが、VBのFormが画面に表示されたままになってしまい、エクセルシートに一度カーソルを当ててVB側の Formをタスクバーに避難する動作が必要です。下記のプログラムではVBのFormがタスクバーに避難しています。 エクセル側のファームがあってもVBのFormがタスクバーに入る様にしたいと思います。 ご指導の程よろしくお願いします。 ■No38820 (亜矢 さん) に返信 > 早速のご指導ありがとうございます。開くプログラムは下記のようになっています。 解放処理に問題のありそうなコードになっていますね…。
原型に近い形で修正するとしたら、こうかな。 # 掲示板上に直接記述しただけなので、テストしていませんけれども。
Imports System.Runtime.InteropServices Public Class Form1 Private exApp As Excel.Application = Nothing Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click Button1.Enabled = False exApp = New Excel.ApplicationClass() Dim exBooks As Excel.Workbooks = exApp.Workbooks Dim exBook As Excel.Workbook = exBooks.Open("C:\test.xls") exApp.Visible = True Marshal.ReleaseComObject(exBook) Marshal.ReleaseComObject(exBooks) End Sub
Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click If exApp IsNot Nothing Then exApp.Quit() Marshal.ReleaseComObject(exApp) exApp = Nothing End If End Sub End Class
|