dポイントプレゼントキャンペーン実施中!

恐れ入りますが、ご存知の方、ご教授願います。

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)を指定しますが、一括で"文字列"指定することは可能でしょうか。

恐れ入ります。ご教授願います。

A 回答 (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
こんな感じで。
    • good
    • 0
この回答へのお礼

end-u 様

アドバイス有難うございます。
ご教授いただいた前半の方法でとりあえず行いました。

後半の方法も色々改造して使用させて頂こうと思います。

しばらく多忙で、なかなかアドバイスを実行することが出来ず、お礼が遅くなり申し訳ございませんでした。

大変ありがとうございました。

お礼日時:2008/07/01 14:52

すでに、すばらしい回答がでているので、別アプローチを



しかも方法のみですが、ファイルを一括して変数に取り込み
シート全体の書式を文字に設定
書式を設定したシートに一気に書き出す
と言うやり方もあります

http://officetanaka.net/excel/vba/file/file08.htm
一番下
    • good
    • 0
この回答へのお礼

pulsa 様

アドバイス有難うございます。
ご教授いただきましたサイトを参考にさせて頂きます。

業務が多忙でしばらくお礼を申し上げることができずに遅くなりました。
今後ともよろしくお願いします。

お礼日時:2008/07/01 14:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています