Управление файлами Excel с использованием VB8 - PullRequest
1 голос
/ 07 июля 2011

Мой скрипт извлекает некоторую информацию (имя файла, дату и т. Д.) С сервера, который содержит только (почти) идентичные файлы Excel, сгенерированные отдельным приложением при каждом его использовании. Цель состоит в том, чтобы выяснить, кто использует инструмент и как часто.

Мне нужна помощь с двумя вещами: извлечение информации из файла Excel и добавление результатов в ТО ЖЕ файл Excel каждый раз, когда он запускается, вместо создания нового файла каждый раз.

Вот что у меня есть ...

Imports Excel = Microsoft.Office.Interop.Excel Imports System Public Class Form1

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    'declare excel objects
    Dim xlApp As Excel.Application
    Dim xlWorkBook As Excel.Workbook
    Dim xlWorkSheet As Excel.Worksheet
    Dim misValue As Object = System.Reflection.Missing.Value
    Dim i As Integer = 2


    'I know this is the problem area...
    xlApp = New Excel.Application
    xlWorkBook = xlApp.Workbooks.Add(misValue)
    xlWorkSheet = xlWorkBook.Sheets("sheet1")


    xlWorkSheet.Cells(1, 1) = " File Name "
    xlWorkSheet.Cells(1, 2) = " Date Created  "

    'this should be cell B1
    xlWorkSheet.Cells(1, 3) = " Requestor   "

    'this should be cell B21
    xlWorkSheet.Cells(1, 4) = " Lead Type"


    'get to directory
    For Each strFolder As String In _
        My.Computer.FileSystem.GetDirectories("Z:\\...")

        'get file names
        Dim infoReader As System.IO.FileInfo
        infoReader = My.Computer.FileSystem.GetFileInfo(strFolder)


        'write to excel worksheet
        xlWorkSheet.Cells(i, 1) = strFolder
        xlWorkSheet.Cells(i, 2) = infoReader.CreationTime


        i += 1


    Next
    xlWorkSheet.SaveAs("C:\...")


    xlWorkBook.Close()
    xlApp.Quit()


    releaseObject(xlApp)
    releaseObject(xlWorkBook)
    releaseObject(xlWorkSheet)

    MsgBox("Excel file created , see file in c:\Documents")
End Sub

Private Sub releaseObject(ByVal obj As Object)
    Try
        System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
        obj = Nothing
    Catch ex As Exception
        obj = Nothing
    Finally
        GC.Collect()
    End Try
End Sub

1 Ответ

0 голосов
/ 07 июля 2011

Вместо создания нового приложения и рабочей книги, просто используйте activeworkbook, например замена

'I know this is the problem area...
xlApp = New Excel.Application
xlWorkBook = xlApp.Workbooks.Add(misValue)
xlWorkSheet = xlWorkBook.Sheets("sheet1")

с

xlWorkBook = xlApp.ActiveWorkbook
xlWorkSheet = xlWorkBook.Sheets("sheetname")

, где вы заменяете имя листа любым желаемым именем листа.

В качестве альтернативы, вы можете просто использовать ActiveSheet.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...