固定幅の形式でファイルを受け取ることがあります。それらをExcelにインポートする必要がありますが、Excelは列を完全に取得しません。テキストインポートウィザードを使用して毎回手動で行うことができますが、これらのファイルは常に同じ形式であるため、「テキストインポートテンプレート」などを作成する方法があるかどうか疑問に思っています。
ファイルを開いているときにマクロを記録すると([ツール]-[マクロ]-[新しいマクロの記録])、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メソッドを参照してください。
Excelでは、テキストのインポート設定を(「テンプレート」として)保存し、後で任意のテキストファイルで再利用することができます。 ExcelMVPのJanKarel Pieterseによるブログ投稿では、これについて詳しく説明しています。 http://blogs.office.com/2010/06/10/importing-text-files-in-an-Excel-sheet/
「テキストインポートテンプレート」は、テキストインポートウィザードを終了すると自動的に作成されます。 「テンプレート」を保持するために、必ずワークブックを保存してください。
別の(または同じ)テキストファイルで再利用するには:
この「テンプレート」を使用して常に同じ名前と場所のファイルをインポートする場合は、「更新」ボタンを押すたびにExcelがファイル名の入力を求めないように「テンプレート」をカスタマイズできます。
テキストのインポート中に、[データのインポート]ダイアログで[プロパティ...]をクリックし、[外部データ範囲のプロパティ]ダイアログで[更新時にファイル名の入力を求める]のチェックを外します。後で[接続のプロパティ]ダイアログで編集することもできます。
スクリーンショットを投稿しますが、「画像を投稿するには少なくとも10の評判が必要です」。
Perl
プログラミングに問題がない場合は、
WriteExcel をサポートするSpreadsheetモジュールがあります。
私は以前にこれを使用して、必要なことの逆を実行しました-- ExcelファイルをCSV形式に変換します 、
そのためにReadExcel
を使用しました。
ここのWriteExcel
リンクの例と、その質問に関するXLSからCSVへの他のリファレンスを見てください。この2つの間で、うまくいくものが見つかるかもしれません。