tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルエクセルシートへのCSVファイルインポートについて
記事No7401
投稿日: 2008/04/25(Fri) 10:56
投稿者ルーキー
エクセルシートへのCSVファイルのインポートを行っています。
(エクセルのマクロ記録を参考として使用しました。)以下ソースコード
xlQueryTables = xlSheet.QueryTables
xlDataRange = xlSheet.Range("A1")
With xlQueryTables.Add(Connection:="TEXT;C:\test.csv", Destination:=xlDataRange)
            .Name = "test"
            .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 = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = True
            .TextFileSpaceDelimiter = False
            '.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh(BackgroundQuery:=False)
        End With
MRComObject(xlQueryTables)
MRComObject(xlDataRange)
宣言したオブジェクトの開放を行っているつもりですが、
処理完了後にエクセルが残ってしまいます。
何か開放を忘れているオブジェクトがあるのでしょうか?
アドバイスをいただけますでしょうか?よろしくお願いします。

[ツリー表示へ]
タイトルRe: エクセルシートへのCSVファイルインポートについて
記事No7402
投稿日: 2008/04/25(Fri) 11:39
投稿者るしぇ
QueryTables はテーブルを複数入れておく入れ物。
xlQueryTables.Add の時点で↑の中に入るテーブルが1つできてるのでは?

[ツリー表示へ]
タイトルRe^2: エクセルシートへのCSVファイルインポートについて
記事No7403
投稿日: 2008/04/25(Fri) 12:54
投稿者ルーキー
ありがとうございました。
Dim xlQueryTable As Microsoft.Office.Interop.Excel.QueryTable
xlQueryTable = xlQueryTables(1)
---処理---
MRComObject(xlQueryTable)
と追加したところ、エクセルが開放されました。
大変ありがとうございました。

[ツリー表示へ]
タイトルRe^3: エクセルシートへのCSVファイルインポートについて
記事No7404
投稿日: 2008/04/25(Fri) 13:03
投稿者るしぇ
こういうパターンの場合、Add の戻り値が追加されるテーブルの
参照になっています。
ヘルプに明記されてないのがアレですが(^^;
オブジェクトブラウザで確認して戻り値が As QueryTable
となっていたので間違いないでしょう。
    xlQueryTables = xlSheet.QueryTables
    xlDataRange = xlSheet.Range("A1")
    xlQueryTable = xlQueryTables.Add(Connection:="TEXT;C:\test.csv", Destination:=xlDataRange)
    With xlQueryTable
        ・・・
    End With
でどうでしょうか?

[ツリー表示へ]
タイトルRe^4: エクセルシートへのCSVファイルインポートについて
記事No7411
投稿日: 2008/04/26(Sat) 17:01
投稿者ルーキー
るしぇさん
大変ありがとうございました。
教えていただいたことを確認しました。
うまくオブジェクトがリリースされていることが確認できました。
重ねてありがとうございました。

[ツリー表示へ]