如何在不提示用户的情况下覆盖Excel应用程序

时间:2010-05-14 03:53:18

标签: vb.net excel overwrite

任何人都可以帮我解决如何覆盖excel文件而不提示VB.Net中的用户..

我试过这段代码,但它不起作用..

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()

4 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:0)

如果您只想覆盖当前存在的文件,可能更容易先删除它,然后保存新文件。所以只需使用System.IO.File.Delete

答案 2 :(得分:0)

为什么需要使用SaveAs
查看代码,您尝试写入同一文件。请改用Save

答案 3 :(得分:0)

 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