2

次のようにVB 6を介してExcelファイルを読み込んでいます

Dim objExcel As Excel.Application
Dim objWorkbook As Excel.Workbook
Dim objWorksheet As Excel.Worksheet
Dim ExlUsedRowCount As Long

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open(FileName, , True)
Set objWorksheet = objWorkbook.Sheets(1)
ExlUsedRowCount = objWorksheet.UsedRange.Rows.Count

For RowIndex = 1 To ExlUsedRowCount
    someVariable = Trim$(objWorksheet.Cells(RowIndex, 9))
Next

objWorkbook.Close False
Set objExcel = Nothing
Set objWorkbook = Nothing
Set objWorksheet = Nothing

私は Excel 2013 を使用しており、このコードは私のマシンでは 1 秒あたり 270 行 () を読み取りますが、クライアント側 (Excel 2010) では 1 秒あたり 33 行しか読み取れません。プロセスのリストを確認しましたが、EXCEL.EXE 以外に 80% を超える CPU を消費するプロセスはありません。これは、クライアント側の 4 台の PC の場合です。

このファイルを CSV で保存しようとしましたが、DD/MM 形式の日付列があり、CSV として保存すると YEAR がまったく省略されます。どんな手掛かり?

何が間違っているのかアドバイスしてください

4

1 に答える 1

1

これを試して:

    Dim objExcel As Excel.Application
    Dim objWorkbook As Excel.Workbook
    Dim objWorksheet As Excel.Worksheet
    Dim lngLoop      As Long
    Dim varArrTemp      as Variant
    Dim rngData         as range

    Set objExcel = CreateObject("Excel.Application")
    Set objWorkbook = objExcel.Workbooks.Open(FileName, , True)
    Set objWorksheet = objWorkbook.Sheets(1)

    Set rngData   = objWorksheet.UsedRange.columns(9)
    varArrtemp =rngData
    For lngLoop = Lbound(varArrTemp) To Ubound(varArrtemp)
        varArrtemp (lngLoop,9)= Trim$( varArrtemp (lngLoop,9))
    Next
    rngData   = varArrTemp

    objWorkbook.Close False
    Set objExcel = Nothing
    Set objWorkbook = Nothing
    Set objWorksheet = Nothing
于 2013-06-26T10:45:34.413 に答える