こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ExcelのOpenTextで作ったシートのコピー

Excel2010のVBAでテキストファイルを読み込むと新しいブックに読み込まれるので、新しいブックのシートをVBAのコードがあるブックにコピーしたいのですが

CSVファイル読み込み時に使う Workbooks.Open の場合には
 Dim wb As Workbook
 Set wb = Workbooks.Open(Filename:="C:\test\test1.csv")
 wb.Worksheets(1).Cells.Copy ThisWorkbook.Worksheets("Sheet1").Range("A1")
 wb.Close False
のような感じでコピーすることができたのですが

テキストファイル読み込み時に使う Workbooks.OpenText の場合には
 Dim wb As Workbook
 Set wb = Workbooks.OpenText Filename:= _
   "C:\test\test1.txt", _
   Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
   xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
   , Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), _
   Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), _
   Array(9, 2)), TrailingMinusNumbers:=True
 wb.Worksheets(1).Cells.Copy ThisWorkbook.Worksheets("Sheet1").Range("A1")
 wb.Close False
とすると、OpenTextの箇所で「Workbooks.OpenText Functionまたは変数が必要です」というコンパイルエラーが発生します。Set wb = Workbooks.OpenText (Filename:=・・・・True)のように括弧でくくっても同様のエラーがでてしまいます。

Microsoft Office 14.0 Object Libratyの参照設定はチェックされています。
Workbooks.OpenText Filename:= _・・・=Trueの部分はマクロの記録の機能で生成したコードです。

このような場合、どのように記述すればよいのでしょうか。
よろしくお願いします。

投稿日時 - 2014-05-30 09:45:15

QNo.8616538

困ってます

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

Openはブックを返しますが、opentextは何も返さないので、ご相談のようなマクロで書くことはできません。

dim wb as workbook
workbooks.opentext …
set wb = activeworkbook
のような書き振りにするしかありませんね。

投稿日時 - 2014-05-30 17:04:00

お礼

教えていただきましたように
workbooks.opentext …
set wb = activeworkbook
のようにしましたらできました。
ありがとうございました。

----------------------------------------------
Dim wb As Workbook
Workbooks.OpenText Filename:= _
 "C:\test\test1.txt", _
 Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
 xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
 , Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), _
 Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), _
 Array(9, 2)), TrailingMinusNumbers:=True
Set wb = ActiveWorkbook
wb.Worksheets(1).Cells.Copy ThisWorkbook.Worksheets("Sheet1").Range("A1")
wb.Close False
----------------------------------------------

投稿日時 - 2014-06-03 16:33:21

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問