Используйте существующий файл Excel для сохранения данных и сохранения под новым именем

Я создаю программу, которая берет файл Excel, добавляет в него информацию и сохраняет ее в файле.

Я могу легко создать новый лист Excel, разместить на нем информацию, а затем сохранить ее в файле. Хотя это не то, что мне нужно. В форме я хочу, чтобы он вытащил существующий пустой шаблон файла Excel, который я создал, поместил в него информацию, введенную в форму, переименовал файл и сохранил его в местоположении файла (аналогично «сохранить как»). Таким образом, изначально будет один пустой файл основного шаблона.

Я не могу понять, как получить этот файл Excel и не создать новый файл Excel.

Вот пример кода:

If EmployeeInfo.empNameTextBox.Text = "" Or EmployeeInfo.dateBox.Text = "" Then
    'prompt user must include name and date at least to save
    MessageBox.Show("In order to save a file, you must include the name AND the date", "Fill in Name/Date!",
            MessageBoxButtons.OK, MessageBoxIcon.Error)
    'minimize the password form and open back up the EmployeeInfo form
    EmployeeInfo.Show()
    Me.Hide()
Else
    'create and save the excel file
    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


    'Add data to cells of the first worksheet in the new workbook
    oSheet = oBook.Worksheets(1)
    oSheet.Range("A1").Value = "Last Name"
    oSheet.Range("B1").Value = "First Name"
    oSheet.Range("A1:B1").Font.Bold = True
    oSheet.Range("A2").Value = "Litoris"
    oSheet.Range("B2").Value = "Mike"

    'Save the Workbook and Quit Excel
    oBook.SaveAs("N:\IT\Device Images\Incomplete\" + EmployeeInfo.empNameTextBox.Text + EmployeeInfo.dateBox.Text)
    oExcel.Quit

    'minimize this form and go back to main form
    ImageTool.Show()
    Me.Hide()
End If

Чтобы подтвердить, я не хочу запускать новую книгу Excel и не могу понять, как извлечь существующий файл, который я создал.


person MarkFro    schedule 03.03.2017    source источник


Ответы (2)


Просто измените oBook = oExcel.Workbooks.Add на
oBook = oExcel.Workbooks.Open("C:\Path\FileName.xls")

И указать правильный путь, а также правильный лист на следующей строке! ;)

If EmployeeInfo.empNameTextBox.Text = "" Or EmployeeInfo.dateBox.Text = "" Then
    'prompt user must include name and date at least to save
    MessageBox.Show("In order to save a file, you must include the name AND the date", "Fill in Name/Date!",
        MessageBoxButtons.OK, MessageBoxIcon.Error)
    'minimize the password form and open back up the EmployeeInfo form
    EmployeeInfo.Show()
    Me.Hide()
Else
    'create and save the excel file
    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.Open("C:\Path\FileName.xls")


    'Add data to cells of the first worksheet in the new workbook
    oSheet = oBook.Worksheets(1)
    oSheet.Range("A1").Value = "Last Name"
    oSheet.Range("B1").Value = "First Name"
    oSheet.Range("A1:B1").Font.Bold = True
    oSheet.Range("A2").Value = "Litoris"
    oSheet.Range("B2").Value = "Mike"

    'Save the Workbook and Quit Excel
    oBook.SaveAs("N:\IT\Device Images\Incomplete\" + EmployeeInfo.empNameTextBox.Text + EmployeeInfo.dateBox.Text)
    oExcel.Quit

    'minimize this form and go back to main form
    ImageTool.Show()
    Me.Hide()
End If
person R3uK    schedule 03.03.2017

Как уже говорилось в R3uK ответ вы можете использовать Workbooks.Open:

Dim oExcel As Object
Dim oBook As Object

oExcel = CreateObject("Excel.Application")
oBook = oExcel.Workbooks.Open("filename")

Я хотел бы немного расширить это и предложить вам напрямую ссылаться на объекты Excel:

Dim oExcel As New Excel.Application
Dim oBook As Workbook = oExcel.Workbooks.Open("filename")

Это поможет со ссылками на методы и свойства объектов Excel. Ниже вы увидите разницу:

Косвенная ссылка:

введите здесь описание изображения

Прямая ссылка:

введите здесь описание изображения

Обратите внимание, что вы должны импортировать соответствующие Microsoft Excel Object Library в свой проект. Вам также нужно будет добавить Imports Microsoft.Office.Interop в свой класс.

В качестве примечания: если вы еще этого не сделали, я настоятельно рекомендую включить параметр Strict Вкл. при использовании объектов Excel:

Ограничивает неявные преобразования типов данных только расширяющими преобразованиями, запрещает позднее связывание и запрещает неявную типизацию, которая приводит к типу Object.

person Bugs    schedule 03.03.2017