2

.xlsx ファイルを使用して Excel エクスポート機能を実行しています。時折、Excel ファイルをロードするときに System.Runtime.InteropServices.Marshal.BindToMoniker() メソッドを使用します。問題のファイルが開いていないが存在する場合、次の結果が得られます。

Excel は起動しますが、ブックは読み込まれず、ワークシートも読み込まれません。Excel が空白で表示されます。

エクスポートを実行するプログラムの外部でファイルを開くと、まったく同じ方法で読み込まれます。Excel が開いていて、ウィンドウの上部に Microsoft Excel と表示されていますが、シートが表示されていません。Excel は何も開いていないように見えます。

オプションに入ると、開いているブックがないことも示されます。Notepad ++で開くとわかるように、ファイルには間違いなくコンテンツがありますが、ドキュメントにはワークブックにシートがあることを確認するのに十分な詳細がありますが、何も表示されません。

この破損がプログラムで発生するのを防ぐ方法、または修正する方法がわかりません。任意の提案や考えをいただければ幸いです!

この問題を回避するために、閉じた Excel ファイルに対して BindToMoniker を使用することはありません (ファイルがロックされているかどうかを確認し、ロックが解除されている場合は、open 関数を使用するだけです)。

この問題が発生したときに実行されるコードは次のとおりです。ファイルが存在し、開いていない場合にのみ発生します。

    Public Function OpenExcelFile( _
    ByRef pobjExcel As Excel.Application, _
    ByRef pwkbWorkBook As Excel.Workbook, _
    ByVal pstrFileName As String) As Boolean 

...

pwkbWorkBook = BindToMoniker(pstrFileName)
            pobjExcel = pwkbWorkBook.Parent
            pobjExcel.Visible = True 'Temp; I use this to see the state of the file
4

6 に答える 6

5

ブックが非表示になっている可能性がありますか? 表示タブで、再表示が有効になっている場合、非表示のワークブックを表示できます。

また、ワークブックを表示する必要がある場合は、Windows の表示プロパティを更新して表示できます。

pobjExcel.Windows(workbookName).Visible = True
于 2012-09-14T20:25:46.047 に答える
3

追加するだけ

pobjExcel.Windows(1).Visible = True

Excelを表示に設定した直後。アプリケーションを表示していると思いますが、ワークブックはまだ表示されていません (少なくとも、これは以前に発生した問題です)。これで修正されるはずです。

于 2012-09-14T20:25:24.497 に答える
1

これを試して

[表示] メニューに移動し、[すべて配置] をクリックします。いくつかのオプション チェック マーク Tiled が表示されます。

それは私のために働いた、うまくいけばあなたのためにも働く.

ベスト、カーン

于 2014-02-13T23:54:58.310 に答える