- ベストアンサー
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)を指定しますが、一括で"文字列"指定することは可能でしょうか。 恐れ入ります。ご教授願います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>一括で"文字列"指定 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 こんな感じで。
その他の回答 (1)
- pulsa
- ベストアンサー率57% (34/59)
すでに、すばらしい回答がでているので、別アプローチを しかも方法のみですが、ファイルを一括して変数に取り込み シート全体の書式を文字に設定 書式を設定したシートに一気に書き出す と言うやり方もあります http://officetanaka.net/excel/vba/file/file08.htm 一番下
お礼
pulsa 様 アドバイス有難うございます。 ご教授いただきましたサイトを参考にさせて頂きます。 業務が多忙でしばらくお礼を申し上げることができずに遅くなりました。 今後ともよろしくお願いします。
お礼
end-u 様 アドバイス有難うございます。 ご教授いただいた前半の方法でとりあえず行いました。 後半の方法も色々改造して使用させて頂こうと思います。 しばらく多忙で、なかなかアドバイスを実行することが出来ず、お礼が遅くなり申し訳ございませんでした。 大変ありがとうございました。