|
分類:[.NET 全般]
立て続けですが、質問させてください。
曖昧な記述が多かったので、 Option Strict On を指定してコンパイルしましたら、以下の行だけ回避できません。 回避策はあるでしょうか? よろしくお願いいたします。
処理は、EXCELを起動するため、Shell.Applicationを利用してます。(どのバーションでも対応可能な様にするため) 遅延バインディングが3箇所あります。 ネットで、Ctypeを使用してくださいなどの記述があり、トライしまいたが惨敗です。 完成時には、EXCELの参照設定も外すつもりでしたので どのEXCELバーションでも可能な様に、敢えてOBJECT型にしました。
Public Function Excel_Get() As Object On Error Resume Next Dim xlapp1 As IntPtr Dim xlapp2 As Object 'Excel.Application Excel_Get = Nothing
xlapp1 = Nothing xlapp1 = FindWindow("XLMAIN", vbNullString) '起動していればそのExcelを使用する If xlapp1 <> IntPtr.Zero Then Else With CreateObject("Shell.Application") .ShellExecute("excel.exe") '←遅延バインディング End With 'スリープ System.Threading.Thread.Sleep(1000) '10ミリ秒待ち End If
xlapp2 = Nothing Do While xlapp2 Is Nothing xlapp2 = GetObject(, "Excel.Application") System.Windows.Forms.Application.DoEvents() '割り込み Loop 'スリープ System.Threading.Thread.Sleep(500) '10ミリ秒待ち If xlapp2 Is Nothing Then MsgBox("EXCELが起動されている事は確認しましたが、ハンドルを取得することが出来ません。" & vbCrLf & _ "再度実行してみて下さい。") End End If xlapp2.visible = True '←遅延バインディング xlapp2.ScreenUpdating = True '←遅延バインディング Excel_Get = xlapp2 MDIClient = Nothing End Function
|