2017-02-16 79 views
0

我必須創建一個桌面應用程序。 我使用Visual Studio 2015年和Excel 我必須: -open Excel文件 -find第一個空行 -write新的數據行 在 - 保存該文件(目前我只能創建一個新的文件。我不知道如何更新廣告保存相同我打開) 它的工作,直到我打開文件.. 謝謝! 這是我寫的打開文件的功能:閱讀Excel文件並使用vb.net找到第一個空單元格

Public Function OpenExcel(filename As String) As Object 
     Dim retval As Object = Nothing 
     Try 
      Dim excel As Microsoft.Office.Interop.Excel.Application 
      Dim wb As Microsoft.Office.Interop.Excel.Workbook 
      Dim ws As Microsoft.Office.Interop.Excel.Worksheet 
      excel = New Microsoft.Office.Interop.Excel.Application 
      wb = excel.Workbooks.Open(filename) 
      excel.Visible = False 
      wb.Activate() 
      ws = wb.Worksheets.Item(1) 
      ws = excel.ActiveSheet 
      retval = ws.Cells(1, 1).value 

     Catch ex As exception 

     End Try 
    End Function 

這是我的代碼

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 

     Dim dialogo As OpenFileDialog 
     dialogo = New OpenFileDialog() 
     dialogo.ShowDialog() 
     Dim ds As Object = f.OpenExcel(dialogo.FileName) 

Dim oExcel As Object 
     oExcel = CreateObject("Excel.Application") 
     Dim oBook As Object 
     Dim oSheet1 As Object 

     oBook = oExcel.Workbooks.Add() 
     oSheet1 = oBook.Worksheets(1) 

     oBook = oExcel.ActiveWorkbook 

     Dim UR As Integer = 0 
     UR = oSheet1.Range("A" & oSheet1.Rows.Count).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row 
     For rr = 1 To UR 
      If oSheet1.Range("A" & rr).Value = ("") Then 
       oSheet1.Range("A" & rr).value = "text1" 
      Else 
       MsgBox("box pieno") 
      End If 
     Next rr 

oExcel.DisplayAlerts = False 
     oBook.SaveAs("C:\Users\an\Desktop\New" & ".xlsx") 
     oBook.Close() 
     oBook = Nothing 

回答

0

第一部分你幾乎了吧。

您的功能已經打開該文件;只需將其更改爲返回工作簿。

Public Function OpenExcel(ByVal filename As String) As Object 
    Dim excel As Microsoft.Office.Interop.Excel.Application 
    Dim wb As Microsoft.Office.Interop.Excel.Workbook 
    excel = New Microsoft.Office.Interop.Excel.Application 
    excel.Visible = False 
    wb = excel.Workbooks.Open(filename, ReadOnly:=False) 
    excel.Visible = False 
    Return wb 
End Function 

(順便說一句,是不是真的讓你的異常處理在這裏,除非你是返回一個「狀態」值或默認的文件是一個好主意,讓來電處理異常)

。 ..然後讓您的代碼的其餘部分更改並保存已經打開的圖書

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    Dim dialogo As OpenFileDialog 
    dialogo = New OpenFileDialog() 
    dialogo.ShowDialog() 
    Dim oBook As Microsoft.Office.Interop.Excel.Workbook 
    Dim oSheet1 As Object 

    Try 
     oBook = OpenExcel(dialogo.FileName) 
    Catch ex As Exception 
     'handle your exception here 
     Exit Sub 
    End Try 

    oSheet1 = oBook.Worksheets(1) 

    Dim UR As Integer = 0 
    UR = oSheet1.Range("A" & oSheet1.Rows.Count).End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row 
    For rr = 1 To UR 
     If oSheet1.Range("A" & rr).Value Is Nothing OrElse oSheet1.Range("A" & rr).Value.ToString() = ("") Then 
      oSheet1.Range("A" & rr).value = "text1" 
     End If 
    Next rr 

    Dim excel = oBook.Application 

    oBook.Save() 
    oBook.Close() 
    excel.Quit() 'This is important: as your application is not visible, it would stay on memory until reboot or shutdown if you don't close it here 
    oBook = Nothing 
End Sub 
+0

謝謝。它的工作原理和我可以寫在下一個單元格。但有一個問題:直到我選擇文件,如果我檢查在我的電腦中打開的後臺進程,我沒有任何Excel。我選擇了我想要打開的文件,並且 - 窗口被自己阻擋了 - 在後臺進程中,出現了excel現在,如果我關閉了進程,並且再次按下打開的按鈕,它就會起作用。我不明白髮生了什麼事 –

0

謝謝。它的工作原理和我可以寫在下一個單元格。 但有一個問題: 直到我選擇文件,如果我檢查在我的電腦打開的後臺進程,我沒有任何Excel。 我選擇了我想要打開的文件,並且 - 窗口被自動屏蔽了 - 在後臺進程中,excel出現 現在,如果我關閉了進程並且再次按下了打開按鈕,它就可以工作。 我不明白髮生了什麼

相關問題