プロが教えるわが家の防犯対策術!

WSHを使って、EXCELを起動して、既存のCSVファイルからデータを読み込みたいのですが、複数のCSVから読み込むなどして、同じワークブックの新しいシートにCSVから読み込んだデータを追加していきたいのですが、どうやればよいのかわかりません。
下のソースのようにしたのですが、そうすると、別のワークブックとして開いてしまうので、わからなくなってしまいました。お願いします。


set Exl=CreateObject("Excel.Application")
Exl.Visible=True
Exl.workbooks.add
Exl.workbooks.OpenText "c:\data.csv"

A 回答 (2件)

ヘルプを見ると次のように書いてあります。


expression.Copy(Before, After)

expressionは対象のオブジェクト式、つまり、コピーするシートのことです。

で、Before、Afterはコピーする位置を指定します。
Beforeで指定したシートの前、もしくはAfterで指定したシートの後という感じになります。

で、Before:=という形式(名前付き引数)なんですが、次のように記述すればOKです。

Beforeで指定したいとき
Sheets("Sheet1").Copy Workbooks("Book1").Sheets(1)

Afterで指定したいとき
Sheets("Sheet1").Copy , Workbooks("Book1").Sheets(1)

ようは、カンマで引数を区切って並べるだけです。
記述した引数以降の引数を省略するときは特に何も気にすることはないのですが、記述した引数より前の引数を省略したい(今回はAfterを記述するけどBeforeは省略というケース)では、省略する引数の数分カンマを入れておく必要があります。

>ブックでなく、特定のシートだけに外部ファイルの内容をインポートするような機能はやはり、無いのでしょうか。

もう、そうなるとインポートではなくなってしまいます。
直接ファイルを開いてその内容を自分でセルの中へ格納するようなことが必要になってきます。
FileSystemObjectなどを使うことになります。
    • good
    • 0
この回答へのお礼

わかりやすい説明で、よくわかりました。
問題が解決しました。
大変お世話になりました。どうもありがとうございました。
これでもう := にも困ることがなさそうです。

お礼日時:2002/07/24 13:22

>下のソースのようにしたのですが、そうすると、別のワークブックとして開いてしまうので、わからなくなってしまいました。



それでいいのでは?
あとは、別のワークブックとして開かれたCSVのシートを、元の追加したいブックにコピーしてあげればお望みの結果になると思うのですが。

この回答への補足

EXCELマクロの自動記録で得たソースなのですが、
Sheets("Sheet1").Copy Before:=Workbooks("Book1").Sheets(1)
のようなソースでシートをコピーできますよね
でも、WSHではこれが、:= の部分を認識できないのか、動作しないのです。
他の:=を含むコマンドも、どれも認識しないようです。
WSHでは、:=を含む表現をどのようにやればよいのでしょうか。

補足日時:2002/07/24 11:23
    • good
    • 0
この回答へのお礼

ありがとうございます。その方法で上手く行きそうですね。ブックも複数扱えるという考え方に慣れていなくて、思いつきませんでした。

ブックでなく、特定のシートだけに外部ファイルの内容をインポートするような機能はやはり、無いのでしょうか。

お礼日時:2002/07/24 10:56

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