• ベストアンサー

Excel VBAでテキストを開く際の表示形式

恐れ入りますが、ご存知の方、ご教授願います。 Excel VBAにてテキストファイルを開く際に、表示形式を"標準"ではなく"文字列"で取り込もうと思います。 "文字列"にするにはVBAで下記のように記述します。 ------------------------------------------------------------------ Workbooks.OpenText Filename:= _ sFileName _ , Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _ Comma:=False, Space:=False, Other:=False, FieldInfo:=Array( Array(1, 2), Array(2, 2), Array(3, 2)) , TrailingMinusNumbers:=True ------------------------------------------------------------------ FieldInfo:=部分に列数だけArray(x, 2)を指定しますが、一括で"文字列"指定することは可能でしょうか。 恐れ入ります。ご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

>一括で"文字列"指定 Loop回すので『一括』とはちょっと違うかもしれませんが : Dim arg(1 To 256) Dim i As Long For i = 1 To 256   arg(i) = Array(i, 2) Next Workbooks.OpenText Filename:=sFileName, _           StartRow:=1, _           DataType:=xlDelimited, _           TextQualifier:=xlDoubleQuote, _           Tab:=True, _           FieldInfo:=arg : こんな感じで可能です。 後は参考ですが、OpenTextメソッドでtextファイルを開くのではなく、 xlsシートにtextデータを取り込む場合は Sub try()   Dim arg(1 To 256)   Dim i As Long   For i = 1 To 256     arg(i) = 2   Next   With Workbooks.Add(xlWBATWorksheet)     With .ActiveSheet.QueryTables.Add(Connection:="TEXT;" & sFileName, _                      Destination:=Range("A1"))       .AdjustColumnWidth = False       .TextFilePlatform = xlWindows       .TextFileTabDelimiter = True       .TextFileColumnDataTypes = arg       .Refresh BackgroundQuery:=False       .Parent.Names(.Name).Delete       .Delete     End With   End With End Sub こんな感じで。

ultgoo
質問者

お礼

end-u 様 アドバイス有難うございます。 ご教授いただいた前半の方法でとりあえず行いました。 後半の方法も色々改造して使用させて頂こうと思います。 しばらく多忙で、なかなかアドバイスを実行することが出来ず、お礼が遅くなり申し訳ございませんでした。 大変ありがとうございました。

その他の回答 (1)

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.2

すでに、すばらしい回答がでているので、別アプローチを しかも方法のみですが、ファイルを一括して変数に取り込み シート全体の書式を文字に設定 書式を設定したシートに一気に書き出す と言うやり方もあります http://officetanaka.net/excel/vba/file/file08.htm 一番下

ultgoo
質問者

お礼

pulsa 様 アドバイス有難うございます。 ご教授いただきましたサイトを参考にさせて頂きます。 業務が多忙でしばらくお礼を申し上げることができずに遅くなりました。 今後ともよろしくお願いします。

関連するQ&A