0

したがって、私の質問は意見に少し主観的ですが、VBAとMicrosoftInteropExcelリファレンスの使用について少し興味があります。私は何よりもVBAを学び、それ以来、より強力なフォームを設計するために.netに移行しました。ワークシートのフォーマットに関して、interop.excelリファレンスはどのように機能しますか?基本的に、機能でVBAを使用するのと同じですか?たとえば、列幅の書式設定やデータの再配置など。同様に、VBA(私が行っている)を知っている場合は、スプレッドシートでマクロを実行する.netアプリを設計するか、vb.netで実行時にマクロを実行する方法を再学習する方がよいでしょうか。アドバイスありがとうございます。

4

1 に答える 1

0

.netでExcelフォーマットコードを書くことは、マクロを駆動するよりも(意見)優れています。まず、Excelにマクロを含める必要はありません。次に、コードを変更する場所が1つあります。あなたがVBAの人なら、マクロを記録するとコードが混乱することを知っているので、それをきれいに取り除く必要があります。

私たちがInteropで私のオフィスで学んだいくつかのこと。実行時バインディングは、サポートされていないバージョンのOfficeで処理できない機能をコードに含めない限り、インストールされているさまざまなバージョンのOfficeをサポートできるため、参照オブジェクトよりも安全です。また、常にオブジェクトを完全に修飾します。つまり、使用することを意味します

Dim XLApp as object = CreateObject("Excel.Application")
XLApp.Range("A1").font.bold=True
XLApp.Range("A1").font.size=12

使ってはいけません

Dim XLApp as object = CreateObject("Excel.Application")
With XLApp.Range("A1")
    .font.bold=True
    .font.size=12
End With

Office相互運用機能には、「with」句によって参照が作成される可能性があるという既知の問題があります。これは、完了時にクリーンアップしても、アプリケーションを閉じた後もハングしたままになる可能性があります。これを自分でテストするには、テストアプリで、ワークシートのいくつかの設定を変更し、保存して閉じます。書き込み環境では、タスクマネージャーを開いても、Excelはプロセスリストに残ります。

お役に立てれば

于 2012-11-13T19:44:23.563 に答える