[[20150926170123]] 『マクロでテキストファイル読み込み』(a-su) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロでテキストファイル読み込み』(a-su)

 マクロでテキストファイルを指定したセル(C3:K100)にデータを読み込みたいのですが、どのようにコードを作成すればいいでしょうか?

よろしくお願いします。

< 使用 Excel:unknown、使用 OS:unknown >


 外部データでテキストファイルの取り込み、転記先 C3 を指定。

 これをマクロ記録すれば、コードが生成されますよ。

(β) 2015/09/26(土) 17:06


 テキストファイル VBA セル
 で検索してみました。

https://www.excel.studio-kazu.jp/cgi-bin/estindex/estseek2.cgi?phrase=%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%80%80VBA%E3%80%80%E3%82%BB%E3%83%AB&perpage=10&attr=&order=&clip=-1&navi=0
(検索代行) 2015/09/26(土) 17:09


 操作のサンプル。2003の画面でリボンではないのですが、2007以降は、データタブの左のほうにあります。

http://kokodane.com/tec3_13.htm

 追加

 2007以降なら
https://support.office.com/ja-jp/article/%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B-e8ab9ff3-be8d-43f1-9d52-b5e8a008ba5c

 ここの、テキスト ファイルに接続してインポートする を参考に。

(β) 2015/09/26(土) 17:14


ありがとうございます。

指定したファイルを読み込むにはどうしたらいいでしょうか?

(a-su) 2015/09/26(土) 17:25


このコードで実行すると、k10セルから貼りつけする指定にしているつもりですが、k1〜k9セルのデータが消えてしまいます。

消えないようにするにはどうしたらいいでしょうか?

 Dim filename As String
 Dim myQT As QueryTable

 filename = Application.GetOpenFilename(FileFilter:="csvファイル(*.csv),*.csv", _
                                                Title:="csvファイルの選択")

 If Sheets("入力").ListObjects.Count > 0 Then
     Sheets("入力").ListObjects().Delete
 End If

    '外部テーブル範囲に取り込み
    Set myQT = Sheets("入力").QueryTables.Add( _
        Connection:="TEXT;" & filename, _
        Destination:=Sheets("入力").Range("k10"))

    With myQT
        .AdjustColumnWidth = True
        .BackgroundQuery = False
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileOtherDelimiter = ""
        .AdjustColumnWidth = False
        .BackgroundQuery = False
        .Refresh
        .Delete
    End With
(a-su) 2015/09/26(土) 18:30

 >>k1〜k9セルのデータが消えてしまいます。

 消えますか? 右のほうに移動していませんか?
 この機能を使うと。取り込んだものが、シート上に【列挿入】されるようですね。
 このオブジェクトのプロパティの RefreshStyle を xlOverwriteCells にすればいいのかなと試しましたが
 これでも、列挿入されてしまいます。

 MSDNのxlOverwriteCellsの説明では

 >>ワークシートに新しいセルまたは行を追加しません。オーバーフローしないように、周囲のセルのデータに上書きします。

 と書いてはあるんですが・・・・

 バグなのか仕様なのか、βにはわかりませんので、識者さんからのアドバイスがほしいところですね。

 とりあえずは、作業シートに取り込んで、取り込んだものを、目的の場所に転記するか、
 あるいは、ブックとして開いて必要領域を目的の場所に転記するか、
 いずれかで対処する手はあると思いますけど。

(β) 2015/09/26(土) 19:16


ありがとうございます。

そうですね、列が挿入されていました。原因がわかりませんでした。
(a-su) 2015/09/26(土) 19:18


 プロパティセットの順番をかえると、なぜかうまくいきました。

 With myQT

 この下に

   .RefreshStyle = xlOverwriteCells

 を追加して試してみてください。

(β) 2015/09/26(土) 19:32


すごいですねできました。ありがとうございました。
(a-su) 2015/09/26(土) 20:00

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.