vb.net 如何在不提示用户的情况下覆盖 Excel 应用程序
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2831735/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to overwrite an excel application without prompting the users
提问by Mark
Can anyone help me on how can I overwrite the excel file without prompting the users in VB.Net..
任何人都可以帮助我如何在不提示 VB.Net 中的用户的情况下覆盖 excel 文件。
I have try this code but It doesn't work..
我试过这段代码,但它不起作用..
Dim xlsApp As New Excel.Application
Dim xlsBook As Excel.Workbook
Dim xlsSheet As Excel.Worksheet
Dim dir As String = Application.StartupPath & "\Template\SampleTemplate.xls"
xlsBook = GetObject(dir)
xlsSheet = xlsBook.Sheets("Per BPA Error Report")
xlsSheet.Range("C2:T2").Merge()
xlsApp.DisplayAlerts = False
xlsSheet.SaveAs(Application.StartupPath & "\Template\SampleTemplate.xls")
xlsBook = Nothing
xlsSheet = Nothing
xlsApp.Quit()
回答by Khalid
Public Sub WriteExcelFile(ByVal ExcelFilePath As String)
Dim excel As Application = New Application
Dim w As Workbook = excel.Workbooks.Open(ExcelFilePath)
Dim sheet As Worksheet = w.Sheets(1)
sheet.Cells(x + 1, 1) = 10
x = x + 1
excel.DisplayAlerts = False
w.Save()
w.Close()
End Sub
回答by Hans Olsson
If you just want to overwrite the file that's currently there, might just be easier to delete it first and then save the new file. So just use System.IO.File.Delete
.
如果您只想覆盖当前存在的文件,那么先删除它然后保存新文件可能会更容易。所以只需使用System.IO.File.Delete
.
回答by shahkalpesh
Why do you need to use SaveAs
?
Looking at the code, you are trying to write to the same file. Use Save
instead.
为什么需要使用SaveAs
?
查看代码,您正在尝试写入同一个文件。使用Save
来代替。
回答by TanuAD
Private Sub f_ExcelWorksheet()
Dim oExcel As Object
Dim oBook As Object
Dim oSheet As Object
'Start a new workbook in Excel
oExcel = CreateObject("Excel.Application")
'oBook = oExcel.Workbooks.Add 'This is when we want to create new excel sheet
'If we want to open exisiting excel sheet
oBook = oExcel.Workbooks.Open("C:\Users\adimadud\Desktop\Test.xlsx")
'Add data to cells of the first worksheet in the new workbook
oSheet = oBook.Worksheets(1)
'This will find the lastRow in the sheet
Dim lastRow As Integer = oSheet.UsedRange.Rows.Count
'This is next emptyRow in the sheet
Dim emptyRow As Integer = lastRow + 1
'oSheet.Range("A1").Value = "Last Name"
'oSheet.Range("B1").Value = "First Name"
'oSheet.Range("A1:B1").Font.Bold = True
'oSheet.Range("A2").Value = "Doe"
'oSheet.Range("B2").Value = "John"
MessageBox.Show(lastRow)
oSheet.Cells(emptyRow, 1).value = "Test"
oSheet.Cells(emptyRow, 2).value = "Test"
'Now again find the lastRow in the excel sheet
lastRow = oSheet.UsedRange.Rows.Count
'This is next emptyRow in the sheet
emptyRow = lastRow + 1
'This will not prompt the user to overwrite the excel sheet
oExcel.DisplayAlerts = False
oBook.Save()
oBook.Close()
'Save the Workbook and Quit Excel
'This will prompt the user to overwrite the excel sheet
'oBook.saveas("C:\Users\adimadud\Desktop\Test.xlsx")
oExcel.Quit()
End Sub