2010-06-02 35 views
1

這是我必須將數據導出到Excel的代碼。用VB導出到Excel並更新文件

Dim oExcel As Object 
Dim oBook As Object 
Dim oSheet As Object 

oExcel = CreateObject("Excel.Application") 
oBook = oExcel.Workbooks.Add 

oSheet = oBook.Worksheets(1) 
oSheet.Range("A1").Value = "ID" 
oSheet.Range("B1").Value = " Nome" 
oSheet.Range("A1:B1").Font.Bold = True 
oSheet.Range("A2").Value = CStr(Request("ID")) 
oSheet.Range("B2").Value = "John" 

    oBook.SaveAs("C:\Book1.xlsx") 
    oExcel.Quit() 

我可以創建並保存excel文件,但我無法更新內容。 我該怎麼做?

謝謝。

回答

0

您試圖將Range設置爲某個值,我認爲您需要將Range設置爲可以包含該值的數組,或者您需要將單個Cell設置爲單個值。

此鏈接顯示怎麼辦之一:

http://support.microsoft.com/kb/301982

+0

但是,如何在excel文件中添加更多行,而不需要詢問是否需要覆蓋它的內容呢? 對於每一次,我只是想添加一行到文件。 難道我不得不使用像「如果(File.exists)bla bla」? – 2010-06-02 09:52:44

+0

@菲利普科斯塔:我可能誤解了你的問題。如果你只是想保存文件而不需要提示,那麼在執行保存之前,執行'oExcel.DisplayAlerts = False',然後在保存之後將它重置爲'True'。 – 2010-06-02 10:00:27

0

我想你想:

oBook = oExcel.Workbooks.Open ("C:\Book1.xlsx") 

當你選擇添加,您要創建一個新的工作簿。

如果您確信不存在任何差距,這樣的事情可能適合:

''Last cell in column A, or first gap 
oSheet.Range("a1").End(xlDown).Select 
''A+1 row 
oSheet.ActiveCell.Offset(1) = "a" 
''A + 1 row + 1 col 
oSheet.ActiveCell.Offset(1, 1) = "b" 
''A + 1 row + 2 col 
oSheet.ActiveCell.Offset(1, 2) = "c" 

否則,你可能需要http://support.microsoft.com/kb/142526,以確定最後一個單元格。

+0

只需打開工作簿並不意味着我可以添加新行,對吧?如何在工作簿中添加新行,而不是覆蓋已有的行? 這就像一個用戶使用一些數據提交表單一樣,數據會轉到工作簿的一行。另一位用戶提交表單,添加另一行,等等。 – 2010-06-02 13:56:59

+0

我已添加註釋 – Fionnuala 2010-06-02 15:38:32