C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■96417 / 親階層)  遅延バインディングの回避策
□投稿者/ 初心者 (6回)-(2020/11/21(Sat) 18:06:29)

分類:[.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
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
親記事 →Re[1]: 遅延バインディングの回避策 /Hongliang
 
上記関連ツリー

遅延バインディングの回避策 / 初心者 (20/11/21(Sat) 18:06) #96417 ←Now
Re[1]: 遅延バインディングの回避策 / Hongliang (20/11/21(Sat) 18:40) #96419
  └ Re[2]: 遅延バインディングの回避策 / 初心者 (20/11/23(Mon) 10:16) #96440 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信