web-dev-qa-db-ja.com

Excelテキストインポートウィザードを自動化しますか?

固定幅の形式でファイルを受け取ることがあります。それらをExcelにインポートする必要がありますが、Excelは列を完全に取得しません。テキストインポートウィザードを使用して毎回手動で行うことができますが、これらのファイルは常に同じ形式であるため、「テキストインポートテンプレート」などを作成する方法があるかどうか疑問に思っています。

3
Dave Mackey

ファイルを開いているときにマクロを記録すると([ツール]-[マクロ]-[新しいマクロの記録])、OpenTextメソッドを使用するために必要なパラメーターを取得します。これが例です

Workbooks.OpenText Filename:= _
    "C:\Documents and Settings\dick\My Documents\actsynclog.txt", Origin:=437, _
    StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(8, _
    1), Array(31, 1), Array(41, 1), Array(57, 1), Array(77, 1), Array(80, 1), Array(82, 1), _
    Array(84, 1), Array(86, 1)), TrailingMinusNumbers:=True

FieldInfo引数はあなたが気にするものです。これは2D配列の配列です。最初の要素は列で、2番目の要素はデータ型です。この例では、テキストファイルを0、8、31、41、57、77、80、82、84、および86の列に分割します。

これで、テキストファイルを開くためのマクロを作成できます。開くファイルを選択する方法については、ApplicationオブジェクトのGetOpenFileNameメソッドを参照してください。

3
dkusleika

Excelでは、テキストのインポート設定を(「テンプレート」として)保存し、後で任意のテキストファイルで再利用することができます。 ExcelMVPのJanKarel Pieterseによるブログ投稿では、これについて詳しく説明しています。 http://blogs.office.com/2010/06/10/importing-text-files-in-an-Excel-sheet/

「テキストインポートテンプレート」は、テキストインポートウィザードを終了すると自動的に作成されます。 「テンプレート」を保持するために、必ずワークブックを保存してください。

別の(または同じ)テキストファイルで再利用するには:

  1. 以前のインポートのデータを保持する(保持するために使用される)シート内の任意のセルをクリックします。
    • Excel 2007/2010:[データ]-> [すべて更新]ドロップダウン-> [更新]をクリックします
    • Excel 2003以前:[データ]-> [データの更新]をクリックします

この「テンプレート」を使用して常に同じ名前と場所のファイルをインポートする場合は、「更新」ボタンを押すたびにExcelがファイル名の入力を求めないように「テンプレート」をカスタマイズできます。

テキストのインポート中に、[データのインポート]ダイアログで[プロパティ...]をクリックし、[外部データ範囲のプロパティ]ダイアログで[更新時にファイル名の入力を求める]のチェックを外します。後で[接続のプロパティ]ダイアログで編集することもできます。

スクリーンショットを投稿しますが、「画像を投稿するには少なくとも10の評判が必要です」。

1
Weaver

Perlプログラミングに問題がない場合は、
WriteExcel をサポートするSpreadsheetモジュールがあります。

私は以前にこれを使用して、必要なことの逆を実行しました-- ExcelファイルをCSV形式に変換します
そのためにReadExcelを使用しました。

ここのWriteExcelリンクの例と、その質問に関するXLSからCSVへの他のリファレンスを見てください。この2つの間で、うまくいくものが見つかるかもしれません。

0
nik