Microsoft.Office.Interop.Excel を使用してスプレッドシートを開き、そこにデータを送り込み、ピボット テーブルのデータを更新して、ユーザーにスプレッドシートを表示する VB.NET アプリケーションがあります。
コードは非常に単純です (エラー処理は示されていません)。
' Start Excel Application
xlApp = New Excel.ApplicationClass
' Get Excel Workbooks
xlWorkBooks = xlApp.Workbooks
' Open workbook
xlWorkBook = xlWorkBooks.Open(Filename:=sExcelDocFullPath, IgnoreReadOnlyRecommended:=blnIgnoreReadOnly)
If Not xlWorkBook Is Nothing Then
' Pump some data over (code not shown)
' Make the first worksheet in the document active
CType(xlWorkBook.Worksheets(1), Excel.Worksheet).Activate()
'Return control of Excel to the user
xlApp.Visible = True
xlApp.UserControl = True
' Refresh workbooks (with alerts off, so as not to hassle user )
xlApp.DisplayAlerts = False
xlWorkBook.RefreshAll()
End If
このコードを実行すると、呼び出し元のアプリの背後で Excel が開かれ、データ接続を更新しているため、小さな Excel の [SQL Server ログイン] ダイアログも呼び出し元のアプリの背後に表示されるため、ユーザーは ALT を実行する必要があります。 +TAB で Excel に移動するか、タスク バーで Excel をクリックします。どちらもユーザーにとって優れたエクスペリエンスではありません。呼び出し元のアプリの前にログイン ダイアログが表示されるようにします。
これを達成する方法を誰かが提案できますか? Visible & UserControl プロパティの設定を RefreshAll の後に移動しようとしましたが、違いはありません。
乾杯、
クリス。