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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-09 14:52:38  来源:igfitidea点击:

How to overwrite an excel application without prompting the users

vb.netexceloverwrite

提问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 Saveinstead.

为什么需要使用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