2017-02-16 29 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出现 现在,如果我关闭了进程并且再次按下了打开按钮,它就可以工作。 我不明白发生了什么

相关问题