[注意] ExcelでQueryTableを使ってcsvファイルを読む
【環境】 OS:Windows 7 Excel:2007【状況】 10個ほどのcsvファイルを各シートに読み込み,処理をするマクロを作成した。 処理終了後,結果を保存して,ブックを閉じて終了。 次にそのExcelブックを開くと・・・ Excelが立ち上がるまでにものすご~く時間がかかった。 【原因】 csvファイルの読み込みにQueryTableを使用。 With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\etc\temp.csv", Destination:=Range("$A$1")) .Name = "temp" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 932 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With 一見,良さそうだが,外部データとのコネクションをつなぎっぱなしにしていることが問題。【対策】 外部データ取り込み後に,外部データとの切断処理を追加。 With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;C:\etc\temp.csv", Destination:=Range("$A$1")) .Name = "temp" .FieldNames = True ・・・中略・・・ .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False .Delete End Withこれで解決♪