2017-02-16 2 views
0

Мне нужно создать настольное приложение. Я использую Visual Studio 2015 и Excel Я должен: -open первенствовать файл -Найти в первую пустую строку -Write новые данные в этой строке -save этот файл (на данный момент я могу создать только новый файл Я не знаю, как обновлять объявление, сохраняя то же самое, что и я) Работает, пока я не открою файл. Спасибо! Это функция, которую я написал, чтобы открыть файл:Чтение файла 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 появляется Теперь, если я закрою процесс, и я снова нажму кнопку открытия. Я не понимаю, что произойдет

Смежные вопросы