1

c#visiocontrolでvisio2013を使用してダイアグラムをvsd形式で保存するにはどうすればよいですか?

私は次のコードを使用しています:

string filename = String.Format("{0}.vsd", Guid.NewGuid());
visioControl1.Document.SaveAs(temppath + filename); //Error!

これはVisio2003-2010では正常に機能しますが、Visio2013では「ファイルが見つかりません」という例外がスローされます。最初の行で拡張子を「vsdx」に変更すると、再び問題ありません。ただし、Visioのすべてのバージョンをサポートする必要があります。

4

1 に答える 1

1

VisioAPIには既知のバグがあります。Visio2013のVisioControlはVSDとして保存できません。あらゆる種類の奇妙な動作が表示されます。これに対処するには、Visio 2013でvsdxとして保存し、Visioの非表示のアプリケーションインスタンスを使用してvsdとして保存する必要があります。

  • vsdxとして保存
  • vsdxのコピーを作成する
  • 新しい非表示のVisioアプリケーションオブジェクトを起動します
  • 非表示のアプリを使用してvsdxのコピーを開きます
  • 非表示のアプリを使用してvsdとして保存
  • (手順1/2で保存したvsdxファイルを削除します)

インストールされているVisioのバージョンを確認するには:VisioVersion = Convert.ToInt32(document.Application.Version.Replace( "。"、 "、")。Replace( "、0"、 ""))VisioVersion> =15->Visioの場合2013

注意:vsd / vsdxとして保存するには、次を使用する必要があります:document.SaveEx insted of document.Save

非表示のVisioアプリのインスタンスを作成するには、Microsoft.Office.Interop.Visio.InvisibleAppを参照してください。

于 2014-04-24T07:22:41.397 に答える