- ベストアンサー
ExcelVBAを使ってテキストファイルを取り込む際に条件を与える方法
こんばんわ。 今、テキストファイルをExcelの特定シートに開くVBAを組もうとしています。 ある書籍のソースをそのまま流用すると、 一部分は満たされるのですが、他方が実現されず、困っております。 やろうとしていること: 新規ブックを開かずに、テキストファイル(CSV形式)の各列の形式(文字列or数値)を指定しながら、特定シートにデータを展開する。 Book名「ABC.xls」 その中のシート名「展開」 テキストファイル名「data.txt」:11列のデータがカンマ区切りで入っています data.txt、ABC.xls共に同じフォルダ内に保存してあります。 やってみたこと: *********************************************** Sub ReadTxt() Dim myTxtFile As String Dim myBuf(11) As String Dim i As Integer, j As Integer Application.ScreenUpdating = False myTxtFile = ActiveWorkbook.Path & "\data.txt" Worksheets("展開").Activate Open myTxtFile For Input As #1 Do Until EOF(1) Input #1, myBuf(1), myBuf(2), myBuf(3), myBuf(4), myBuf(5), myBuf(6), _ myBuf(7), myBuf(8), myBuf(9), myBuf(10), myBuf(11) i = i + 1 For j = 1 To 11 Cells(i, j) = myBuf(j) Next j Loop Close #1 End Sub *********************************************** というソースで特定シートに取り込めたのですが、 各列の取り込み形式(文字列、数値)を指定する方法がわかりません。 OpenTextメソッドでFieldInfoに配列を記述し取り込み形式を指定する方法は見つけたのですが、こちらは、新規ブックが開いてしまい・・・ どなたか方法をご存知の方、回答を頂けたら幸いです。 お願いします。
- みんなの回答 (2)
- 専門家の回答
お礼
教えていただいたソースで実験してみたところ、 見事目的の結果を導けました。 ありがとうございます。 また、何かの際には質問していると思いますが、見かけましたら、助言をいただけると幸いです。
補足
回答ありがとうございます。 質問での記入に漏れていた部分まで憶測して頂いている回答、本当に感謝いたします。 nitscapeさんへのお礼にも書きましたが、全て数値の物の中から、頭に”0”が付くような数値を文字列にしようと試みていたものでした。 その点で、 >0001 の様な前ゼロが数値になってしまう(前ゼロが消える) > 'B、E、F、G、J、K列は文字列の例 > Case Else > Columns(C).NumberFormatLocal = "@" という回答はBingoかもしれません。 本日は、明日のことも考えると試せませんが、 明日移行試して、再びお礼をしたいと思います。 変数を設けて、文字列に指定したい列にNumberFormatLocalプロパティ(?)を指定してやれば良いのですね。 実行してみて、またわからない点は質問するかもしれませんが、その後目に付いた際にはお付き合い願えると幸いです。 ありがとうございます。