2014-01-18 100 views
3

蔭的Visual Studio 2012,提示用vb.net打開一個保存對話框Excel文件使用

我想打開「保存對話框」來選擇在哪裏保存,而不是使用固定的路徑我的文件, 的下面的代碼是我想用它在什麼樣本:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    Dim xlsWorkBook As Microsoft.Office.Interop.Excel.Workbook 
    Dim xlsWorkSheet As Microsoft.Office.Interop.Excel.Worksheet 
    Dim xls As New Microsoft.Office.Interop.Excel.Application 

    Dim resourcesFolder = IO.Path.GetFullPath(Application.StartupPath & "\Resources\") 
    Dim fileName = "book1.xlsx" 

    xlsWorkBook = xls.Workbooks.Open(resourcesFolder & fileName) 
    xlsWorkSheet = xlsWorkBook.Sheets("a") 

    xlsWorkSheet.Cells(1, 1) = TextBox1.Text 

    xlsWorkBook.SaveAs("C:\output\book1.xlsx") 

    xlsWorkBook.Close() 
    xls.Quit() 


End Sub 

我想改變這種路徑爲「C:\輸出\ book1.xlsx」保存對話框,這樣我就可以選擇保存它手動。

非常感謝..

回答

3

這樣,不要忘了處理與COM對象像我這樣的元帥上課。

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
Dim xls As New Microsoft.Office.Interop.Excel.Application 
Dim xlsWorkBook As Microsoft.Office.Interop.Excel.Workbook 
Dim xlsWorkSheet As Microsoft.Office.Interop.Excel.Worksheet 
Dim resourcesFolder = IO.Path.GetFullPath(Application.StartupPath & "\Resources\") 
Dim fileName = "book1.xlsx" 
xlsWorkBook = xls.Workbooks.Open(resourcesFolder & fileName) 
xlsWorkSheet = xlsWorkBook.Sheets("a") 
xlsWorkSheet.Cells(1, 1) = TextBox1.Text 
Using sfd As New SaveFileDialog 
    If sfd.ShowDialog() = DialogResult.OK Then 
    xlsWorkBook.SaveAs(sfd.FileName) 
    MessageBox.Show(sfd.Filename) 
    End If 
End Using 
xlsWorkBook.Close() 
xls.Quit() 
Marshal.FinalReleaseComObject(xlsWorkSheet) 
Marshal.FinalReleaseComObject(xlsWorkBook) 
Marshal.FinalReleaseComObject(xls) 
End Sub 
+0

非常感謝,它的工作..我說的唯一的 「使用SFD爲新SaveFileDialog sfd.ShowDialog() xlsWorkBook.SaveAs(sfd.FileName) 最終使用」 的一部分。如果你可以澄清元帥部分,因爲我不明白,另一個簡單的事情,有沒有一種方法,我可以顯示一個消息框與我選擇將文件保存到..,非常感謝您的位置時間 – user3151946

+0

。,關於消息框部分的任何建議(顯示一個消息框,其中包含我選擇保存文件的位置),謝謝 – user3151946

+0

如果你不使用'Marshal.FinalReleaseComObject',你可以發現你的excel仍然打開作爲任務管理器中的一個進程。 – OneFineDay

0

添加一個OpenFileDialog到您的表單,然後...

With OpenFileDialog1 
     .Title = " whatever" 
     .InitialDirectory = "c:\" 
     .Multiselect = False 
     If .ShowDialog() = DialogResult.OK Then 
      xlsWorkBook.SaveAs(.FileName) 
     End If 

末隨着

0

您可以使用此:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    Dim xlsWorkBook As Microsoft.Office.Interop.Excel.Workbook 
    Dim xlsWorkSheet As Microsoft.Office.Interop.Excel.Worksheet 
    Dim xls As New Microsoft.Office.Interop.Excel.Application 

    Dim resourcesFolder = IO.Path.GetFullPath(Application.StartupPath & "\Resources\") 
    Dim fileName = "book1.xlsx" 

    xlsWorkBook = xls.Workbooks.Open(resourcesFolder & fileName) 
    xlsWorkSheet = xlsWorkBook.Sheets("a") 

    xlsWorkSheet.Cells(1, 1) = TextBox1.Text 

    xlsWorkBook.SaveAs("C:\output\book1.xlsx") 
    xls.Application.DisplayAlerts = False 
    xlsWorkBook.Close() 
    xls.Quit() 


End Sub 
1

一點更全面的方式來打開另存爲對話框比OneFineDay的回答(用同樣的方法)。
這將使用指定的目錄,文件名,擴展類型和窗口標題打開「另存爲」對話框;它還會在覆蓋任何現有文件之前提示。

Dim dir as String = "C:\output\" 
Dim fName As String = "Book1" 

Using sfd As New SaveFileDialog 
    sfd.InitialDirectory = dir 
    sfd.Title = "Save As" 
    sfd.OverwritePrompt = True 
    sfd.FileName = fName 
    sfd.DefaultExt = ".xlsx" 
    sfd.Filter = "Excel Workbook(*.xlsx)|" 
    sfd.AddExtension = True 
    If sfd.ShowDialog() = DialogResult.OK Then 
     xlsWorkBook.SaveAs(sfd.FileName) 
    End If 
End Using 
相關問題