2016-05-13 1 views
0

私はユーザーが押してグリッドをExcelに送信するボタンを持っています。このボタンは、ユーザーがアクセスしたくないディレクトリにファイルを保存しています。 (それは隠された共有です)次に、ユーザーが見るためにすぐにファイルを開きます。Excelファイルの保存ディレクトリを指定するにはどうすればいいですか?

私はMicrosoft.Office.Interop.Excel名前空間を使用していますので、Excelアプリケーションとブックを使用しています。

アプリケーションがディレクトリからファイルを開くことを希望しますが、ユーザーがSaveAsを使用してファイルを保存することを選択した場合(ユーザーが保存をクリックした場合、新しいファイルとして扱い、ダイアログ)、初期のディレクトリをC:のようにしたいと思います。ここで

は、関連するコードのビットは次のとおりです。

Public Sub sendToExcel() 

     'Code here that exports data to Excel 

     Dim xlApp As Excel.Application = New Excel.Application() 
     Dim xlWorkbook As Excel.Workbook = xlApp.Workbooks.Open(filePath) 

     xlApp.Visible = True 

End Sub 

私が試した中で最も明白なものはこれです:

xlApp.DefaultFilePath = "C:\"

ファイルが新しい場合にのみ動作するようです(保存されていない)。

提案がありますか?

+0

このためにExcel interopライブラリを使用することを余儀なくされていますか? SaveFileDialogを使用して結果を使用して、選択したファイルにブックを保存するのはなぜですか? – Steve

+0

おそらく?私の最初の思想はProcess.Start(filePath)を使用することでしたが、ファイルを変更する能力がなくなり、Excel interopを使用することになっています。 Excelに送信されるのは、ファイルをすぐに開いて表示することです。ファイルを共有に保存してからそこから開きます。しかし、これにより、ユーザーはそのディレクトリにアクセスできます。 –

+0

私が達成しようとしているのは、ユーザーがグリッドをExcelに送信するためにクリックし、どこに保存するかを尋ねずにすぐに開くことです。 –

答えて

0

ファイルを隠し共有に保存する必要がありますか?

そうでない場合は、Path.GetTempFileName()を使用してユーザーの一時フォルダに保存し、そこからExcelで開くことができます。

こうして、「名前を付けて保存」すると、ローカルの一時フォルダのみがソースとして表示されます。

もちろん、これはデスクトップアプリケーションの場合にのみ機能します。

+0

私はもともとこれをやろうとしていましたが、ユーザーの一時フォルダーがExcelに送信されたものでいっぱいになることは望ましくありません。私はファイルを閉じた後にファイルを削除しようとしていましたが、ファイルが開いている間にアプリケーションが使用されなくなりました。しかし、物事については常に方法がありますので、おそらく私はこれ以上見る必要があります。 –

+0

あなたはメインフォームのクローズイベントでそれをきれいにすることができます – Disman38

+0

私はそれについても考えましたが、開いているファイルを閉じることなくプログラムを閉じることができるのは間違いなくユーザーにとっての好みです。 –

関連する問題