WSHを使用してEXCELにワークシートをCSVから読み込んで追加する方法

このQ&Aのポイント
  • WSHを使用してEXCELを起動し、複数のCSVファイルからデータを読み込んで新しいシートに追加する方法について教えてください。
  • ソースコードの通りに実装したところ、別のワークブックとして開くため正しく読み込めませんでした。
  • お願いします。
回答を見る
  • ベストアンサー

WSHで、EXCELにワークシートをCSVから読み込んで追加したい。

WSHを使って、EXCELを起動して、既存のCSVファイルからデータを読み込みたいのですが、複数のCSVから読み込むなどして、同じワークブックの新しいシートにCSVから読み込んだデータを追加していきたいのですが、どうやればよいのかわかりません。 下のソースのようにしたのですが、そうすると、別のワークブックとして開いてしまうので、わからなくなってしまいました。お願いします。 set Exl=CreateObject("Excel.Application") Exl.Visible=True Exl.workbooks.add Exl.workbooks.OpenText "c:\data.csv"

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.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などを使うことになります。

accessdb_user
質問者

お礼

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

その他の回答 (1)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

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

accessdb_user
質問者

お礼

ありがとうございます。その方法で上手く行きそうですね。ブックも複数扱えるという考え方に慣れていなくて、思いつきませんでした。 ブックでなく、特定のシートだけに外部ファイルの内容をインポートするような機能はやはり、無いのでしょうか。

accessdb_user
質問者

補足

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

関連するQ&A

  • WSHでExcelをCSV出力

    WSHでExcelのCSV出力について質問です。 Set objExcel=CreateObject("Excel.Application") objExce.Workbooks.Open InputFilePath,,True objExce.Worksheets(1).SaveAs OutFilePath, 6 objExce.ActiveWorkBook.Close で、ExcelをCSV出力することが出来たのですが、 範囲指定して出力する方法を簡単に実装するにはどうすればよいでしょうか? たとえば「C~Zの行の5行目から存在する全てのデータ」 といったケースです。 ※260行までデータが入っていた場合、C5:Z260の範囲です どなたかわかりやすいサンプルありましたら、よろしくお願いいたします。

  • VBSからのエクセル操作

    エクセルでテキストファイルを開く作業をVBSで自動化したいのですが、下のスクリプトが上手く動作しません。どうすれば上手いこと動くように出来るでしょう? OpenTextのVBS上での使用法がポイントだと思うんですが。 Dim objXL Set objXL = WScript.CreateObject("Excel.Application") objXL.Workbooks.OpenText "hoge.txt", ,1, xlDelimited, xlDoubleQuote, False, False, False, False, False, True, ":", Array(1, 1) objXL.Visible = True

  • wshからexcel操作で,ChDirを使いたい

    はじめて質問をします。  monnomestと申します。 vbaのマクロを実行して、シートを作成するwsh(by jscript)を作成しました。そのシートを保存する際にchrdirで保存場所を明示したいのですが、指定の仕方が分かりません。(wshを置いておくdirectoryにしたい。) ChDirは、エクセルのmethodではないため、以下のようでは、エラーになりますし、 var objXL = WScript.CreateObject("Excel.Application"); objXL.Visible = true; with(objXL){ var tar=workbooks.Open(scriptpath+vba); try{ Run("'"+vba+"'!'"+command+"'"); }catch(e){ } tar.Close(); ChDir("xxxxxxx"); ←  とは出来ない。 } もちろん、wshを使わず、vbaをそのまま立ち上げればこんなことする必要はないのですが、 諸々の事情がありまして、wshで行えれば都合がよいのです。 objectが何なのかが分かれば解決でしょうか。 どなたかご教示いただけますでしょうか。

  • ExcelのワークシートをVBAで削除する方法

    Excelのオブジェクトを作り、ワークブックを作りワークシートを1つだけ作り、ワークシートの名前を"abc"にするにはどうしたらよいでしょうか? x=CreateObject("Excel.Application") y=a.Workbooks.Add z=y.Worksheets(1) をやると、シートがExcel標準の3シートつくられます。ここまでは理解できるのですが、上記のsheet1の名前を変更。残りのsheet2,sheet3を削除するにはどうしたらよいでしょうか?

  • Notes 開発で、 excelファイルを読み込みデータを追加したい。

    現在notes7で開発を行っている(初心者)なのですが ビュー内の選択している文書からデータを取ってきて 読み込んだexcelファイルに書き足していきたいのですが、 任意のexcelを開くところまではネットを参考にして出来たのですが 詳細を理解していないため、そのファイルにデータを書き足していくことが出来ません。アドバイスをお願い致します。 現在作ってあるプログラムが以下です。 ' 既存のEXCELワークブックを開く Dim xlApp As Variant ' Excelオブジェクト ' マイドキュメントの指定ファイルを開く Dim wsh As Variant, fso As Variant Dim FilePath As String, FileName As String Set wsh = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") FilePath = wsh.SpecialFolders("MyDocuments") FileName = FilePath & "\sample.xls" If Not fso.FileExists(FileName) Then Msgbox "ファイルがありません。" & Chr(13) & FileName, 16 Exit Sub End If Set xlApp = CreateObject("Excel.Application") ' Excel OLE起動 xlApp.Workbooks.Open FileName xlApp.Visible = True これで、ファイルは開けます。ちなみにビュー内の選択文書の取り込みは出来てます。後は、そのデータをエクセルに書き出すだけなのですが そこが解りません。 それと、現在マイドキュメント内のファイルを読み込んでますが 同じデータを共有リソースの中に保存してあるので、そっちから開きたいのですが、パスをどのように設定すればいいのか解りません。 すみませんが、アドバイスをお願い致します。

  • 引用符がある、またはないCSVファイルをExcelマクロで開くには?

    カンマ区切りの複数のCSVファイルがあります。 ファイルによって、引用符がダブルクォーテーションであるものと、引用符がないものがあります。 1つのファイルの中では、引用符は統一されています。 この複数のCSVファイルをマクロで1つのExcelファイルにまとめたいと思います。 そこで、CSVファイルを一つ一つExcelで開いて、データをコピー&ペーストしたいのですが、 引用符の違いによって分岐させる処理がうまく動きません。 分岐処理は下記のようにしました。 アドバイスをお願いいたします。 On Error GoTo err1 Workbooks.OpenText Filename:=myPath & fname, Comma:=True err1: Workbooks.OpenText Filename:=myPath & fname, textqualifier:=xlTextQualifierNone, Comma:=True

  • Delphiからエクセルを設定

    Delphiから ExcelのSheet1のCells[1,1]からSheet2のCells[1,1]、 Sheet1のCells[1,2]からSheet3のCells[1,1]へとSheet間にリンクを はる方法を教えてください。 Excelは下記のように起動しております。 Excel := CreateOleObject('EXCEL.Application'); Excel.Visible := True; Excel.Workbooks.Add; Excel.WorkBooks[1].Sheets.Add; Excel.WorkBooks[1].ActiveSheet.Name:='Sheet1'; //---Sheet1へデータ送信 Excel.WorkBooks[1].Sheets.Add; Excel.WorkBooks[1].ActiveSheet.Name:='Sheet2'; //---Sheet2へデータ送信 Excel.WorkBooks[1].Sheets.Add; Excel.WorkBooks[1].ActiveSheet.Name:='Sheet3'; //---Sheet3へデータ送信 ここでりんくしたい。

  • VBScriptで自動リンクONでExcelファイルのOpen

    お世話になっております。VBScriptでExcelの既存ブックファイル をオープンさせるのを見よう見真似で作成したのですが、開こうと しているブックに自動リンクが設定されていて、毎回 「開いているブックには、ほかのファイルへの自動リンク・・・・」 と聞かれ「Y」をクリックしています。 希望としてはYを自動で選択してオープンしてくれたらと思っています。 調べてみてUpdateLinkがTrueとか書けばいいように思っていろいろ 試してみたのですがイマイチうまく行きません。 すいませんが教えてもらえませんか? [Source]------------------------------------------------------- Option Explicit Dim objExcel 'エクセルオブジェクトを作成します Set objExcel = CreateObject("Excel.Application") 'エクセル画面を表示します objExcel.Visible = True 'ワークブックを開きます objExcel.Workbooks.Open "C:\Book1.xls" 'エクセルオブジェクトの破棄 Set objExcel = Nothing

  • VBA 新規にエクセルを開き既存のファイルを開く

    VBAで新規にエクセルのアプリケーションを起動し、 その中に既存のファイルを起動する方法は有りますか? Sub Sample() Dim appExcel As Excel.Application Dim WSH As Variant Dim strPath As String Set appExcel = New Excel.Application Set WSH = CreateObject("Wscript.Shell") strPath = ActiveWorkbook.Path With appExcel .Visible = True .Workbooks.Add .ActiveWorkbook.SaveAs (strPath & "\ test.xls") End With Set WSH = Nothing End Sub このコードは、ネットから拾ったサンプルコードなのですが 新しいアプリケーションでエクセルを立ち上げることはできたのですが 新規のブックが開いてしまい、 更に、開きたいファイルに上書き保存してしまいそうです。 新規のブックが開く原因は .Workbooks.Addで、 上書き保存する原因は .ActiveWorkbook.SaveAs だとわかってるのですが、 この部分を同変更すればいいのかがわかりません。 Workbooks.Open?Filename:="C:\Users\test.xlsx" だと、現在実行しているvbaファイルを同じ枠内で 該当のファイルが開いてしまいます。

  • ExcelのVBAでRangeとCellsをWSHから使いたいのですが・・

    エクセルに書き込むマクロのコードを書いていたのですが、 Exl.range(Cells(1, 1), Cells(3, 4)).Font.Bold = True のような部分が、VisualBasic や OFFICEのVBA上で 参照設定でExcelを指定していると、動くのですが、 同じコードが、WSHでは参照設定ができないせいなのか、 動きません。WSHの場合、どのようにしたらよいのでしょうか。 よろしくお願いします。

専門家に質問してみよう