2016-05-13 118 views
0

我有一个按钮,用户按下并发送一个网格到Excel,它将文件保存在我不希望用户有权访问的目录中。 (这是一个隐藏的共享)然后立即打开文件供用户查看。如何指定Excel文件SaveAs对话框的默认目录?

我正在使用Microsoft.Office.Interop.Excel命名空间,所以我正在使用Excel应用程序和工作簿。

我想让应用程序从目录中打开文件,但是如果用户选择使用SaveAs保存文件(我宁愿如果用户单击保存,它将它视为新文件并打开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互操作库?为什么不使用SaveFileDialog,然后使用结果将工作簿保存到选择的文件中? – Steve

+0

也许?我的第一个想法是使用Process.Start(filePath),但我失去了对文件进行任何更改的能力,所以我去了解我所知道的其他内容,即使用Excel进行互操作。发送到Excel的要点是立即打开文件进行查看,以便将文件保存在共享中,然后从此处打开。但是,这使用户可以访问该目录。 –

+0

我想知道我试图完成的是用户点击发送网格到Excel并立即打开而不询问要保存的位置。 –

回答

0

该文件是否必须保存在该隐藏的共享中?

如果不是,您可以使用Path.GetTempFileName()将它保存在用户的临时文件夹中,然后从那里用Excel打开它。

这样,当他们“另存为”时,他们只会看到本地临时文件夹作为源。

当然,这只适用于桌面应用程序。

+0

我原本打算这样做,但我不希望用户的临时文件夹满足发送给Excel的任何内容。我将在关闭文件后删除文件,但这会阻止我的应用程序在文件仍处于打开状态时使用。虽然总是有一些解决办法,所以也许我需要更多地考虑这一点。 –

+0

您可以在主窗体的关闭事件 – Disman38

+0

上清理它,我也考虑过这样做,但绝对会让用户能够在不关闭已打开的文件的情况下关闭程序。 –

相关问题