• ベストアンサー

EXCELのマクロをバッチファイルから起動させ、あるフォルダ内のCSVファイルをTXTファイルに変換。

あるフォルダにdata.csvというファイルがあります。 一つ目の質問は、EXCELのマクロで「あるフォルダ内にある***.csvを開く」という動作はどのように記述されますか? 2つ目の質問はバッチファイルあるいはスクリプトファイルでEXCELのこのマクロを実行させることは可能ですか。どのように記述したらよいのでしょうか。 3つ目はセルA1~A10の値をx B1~B10の値をyとしてグラフを描かせるコマンドはありますか。

  • daipot
  • お礼率74% (185/247)

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

3つ目は、#1にご回答にあるようにマクロの記録を取れば良い。骨子は Sub Macro1() Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets("Sheet3").Range("A1:B10"), PlotBy:= _ xlColumns End Sub でChartType = xlXYScatterと PlotBy:=xlColumnsがキーです。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

1つ目の質問。OpenTextを利用。 Sub test02() Workbooks.OpenText Filename:="c:\My Documents\data.csv", DataType:=xlDelimited, tab:=True End Sub 引数はOpenTextでWEB照会して、解説を見てください。

daipot
質問者

お礼

2と3の回答ありがとうございます。初心者なもので助かりました。

  • gatyan
  • ベストアンサー率41% (160/385)
回答No.1

1)マクロ(VBA)で Workbooks.Open ("x:\あるフォルダ\data.csv") と記述できます。 2)起動オプションで直接実行するマクロ名を指定することはできないようです。自動実行マクロを使用すればできなくも無いですが…ウイルスとかの対策も十分に必要ですね。 3)エクセルのグラフ機能そのものでOKのようですが…。マクロの記録でグラフを作成するマクロを作成しましょう。必要なコードがわかります。

daipot
質問者

お礼

ありがとうございます。しばらく別件で忙しいので暇なときに試してみます。

関連するQ&A

  • Excelマクロ戻り値をバッチファイルで取得したい

    下記のように、Windowsのコマンドプロンプトから バッチファイル(test.bat)を実行して、 バッチファイルの中から、 VBスクリプトファイル(test.vbs)を実行して、 VBスクリプトファイルの中から、 Excelブック(Book1.xlsm)の中の main()というマクロを実行させていますが、 以下のことがよく分からないので教えてください。 (問1) Excelマクロmain()の戻り値(result)を、    VBスクリプトファイル(test.vbs)の中で    利用したいのですが、Excelマクロからの    戻り値を取得する方法がよく分かりません。    例えば、WScript.Echoでresultの値を表示するには、    どのように記述すればよいのでしょうか。 (問2) Excelマクロmain()の戻り値(result)を、    バッチファイル(test.bat)の中で    利用したいのですが、VBスクリプトからの    戻り値を取得する方法がよく分かりません。    例えば、echoでresultの値を表示するには、    どのように記述すればよいのでしょうか。 よろしくお願いします。 ---test.bat--------------------------------------- cscript C:\test\test.vbs /A:"C:\test\Book1.xlsm" /B:"main" (ここでechoなどでresultの値を表示したい) -------------------------------------------------- ---test.vbs--------------------------------------- Dim oApp Set oApp = CreateObject("Excel.Application") oApp.Visible = False Set objParm = WScript.Arguments.Named oApp.Workbooks.Open objParm("A") oApp.Run objParm("B") oApp.DisplayAlerts = False oApp.Quit oApp.DisplayAlerts = True (ここでWScript.Echoなどでresultの値を表示したい) -------------------------------------------------- ---Main() (Excelマクロ)--------------------------- Function main() As Integer (処理)  main=result End Function --------------------------------------------------

  • エクセルファイルの1レコード(1行)を1csvファイルへ変換マクロ

    エクセルファイルの1レコード(1行)を1csvファイルへ変換し、エクセルファイルにあるレコード数分だけあるフォルダに自動作成するマクロを教えて下さい。 因みに、csvファイル名は、エクセルデータの『a列.csv』となるようにしたいです。 【例】 本日2007/11/13 ○○.xls A列 B列 C列 111 1 356 13 1 2 ・ ・ ・ ・ ・ ・ 111.CSV "2007/11/13(火)","1","356,"","","" 13.CSV "2007/11/13(火)","1","2,"","","" 変換後のcsvの中身は 1列目に、本日の日付 2列目に、1 3列目に、変換元のエクセルファイルの3列目 4、5、6列目に空白 という形式です。 どなたかお分かりになるかた、ご教授願います。

  • excelのマクロでファイル一覧取得,グラフ作成

    以下のような作業をするために,EXCELのマクロを組もうと考えています. 指定したフォルダ以下のCSVファイルを取得(サブフォルダも含む)  ↓ 見つけたCSVファイルをエクセルで開き,値が含まれている範囲を選択してグラフを作成  ↓ "*.xls"として保存 エクセルのマクロは初めてなので,どうコーディングすればいいか全くわからず困っています. どなたかご教示くだされば幸いです. よろしくお願いいたします.

  • エクセルのマクロでファイルを自動で保存するには?

    こんにちは。お世話になります。 エクセルのVBAマクロ文の書き方でお知恵を拝借したいと思います。 さて、私のかかる業務でエクセルファイルで営業実績を出しています。 COBOLで作ったファイルをCSVにインポートして そのCSVの値を別のエクセルファイルで引っ張るという手順を踏んでいますが、 それをマクロで動かすとエクセル上で『保存しますか?』と聞いてきます。 答えは『はい(Y)』で確定しているので、その命令文さえ組み込められればいいのですが、 その命令文の書き方が判りません。 (解決したいVBAマクロの命令文) Workbooks.Open Filename:="D:\(Aファイル).csv" Workbooks.Open Filename:="D:\(Aファイルの値を引っ張るBファイル).xls" ThisWorkbook.Saved = True (ここで聞いてくる注意に自動で『Y』を入れたいと思っています。) ActiveWindow.Close ActiveWindow.Close 以上、お知恵を拝借したく、お願いいたします。

  • vbsで、フォルダ内にあるcsvファイル全てを開き、マクロを起動させた

    vbsで、フォルダ内にあるcsvファイル全てを開き、マクロを起動させたい。 こんにちは。 お世話になっております。 さて、最初はバッチでどうにかならないかと思っていましたが、下記vbsソースを見つけ、 早速チャレンジしたのですが、ファイルが開くところまではうまく行きますが、「マクロ Macro1がありません」というメッセージが出てしまい、マクロが実行されません。 手動でマクロを実行しようとするときに出てくるマクロ一覧には、PERSONAL.XLS:Macro1と、表示されております。 マクロの保存先をまちがえているのでしょうか? また、あるフォルダのcsvファイル全てに対して1つのvbsキックで処理が行なわれるようにするには、どの様にすればいいでしょうか? よろしくお願いします。 ----------------------------------------------------------------------- Dim obj Set obj = WScript.CreateObject("Excel.Application") obj.Visible = True obj.Workbooks.Open "C:\Documents and Settings\Administrator\My Documents\001.xls" obj.Application.Run "Macro1"

  • csvファイルを結合するバッチファイル作成方法

    こんにちは。 フォルダ名cccの中にある2つのcsvファイル、sheet1とsheet2を 結合してketsugoというcsvファイルつくるために、 バッチファイルを作成しようとしています。 (sheet1とsheet2のcsvファイルは4万行前後/シートで、 今後結合させるファイル数を増やす予定です。 手作業では難しいと思い、バッチ処理を検討中です。) C:\aaa\My Douments\ccc>copy /y sheet1.csv+sheet2.csv ketsugo.csv というコマンドが、コマンドプロンプト上で実行できます。 (aaaやcccはファイル略称で、漢字や半角スペース含む) 次にウィンドウズのメモ帳を開き、同じコマンドを入力し、 拡張子.batのバッチファイルを作りました。 作成したバッチファイルを開いてコマンドを実行させようと しましたが、容量ゼロの、アプリケーションを選択させる ファイルしかできません。コマンドの中に半角スペースを含む ファイル名がある場合は、""でくくるルールがあるそうですが、 実際に上記のコマンドのどこからどこまでを""でくくったら よいかわかりません。その他にも不備な点がありましたら 改善方法を教えていただきたいと思います。 よろしくお願いします。

  • バッチファイルでエクセルのマクロを動かしたい

    最近になってバッチファイルを知りました。バッチファイルを使ってエクセルファイルの中に書かれたマクロを動かしたいと思っています。 過去ログの検索をし、マクロが書かれたエクセルを起動させるところまではわかりました。 しかしその先がわかりません。わからない内容は次の二つです。 1)エクセル起動時マクロを有効にするかどうか聞いてきます。自動的に有効で起動させるにはどうしたらいいでしょうか。 2)Macro1という名前のものが001.xlsの中に既に作ってあったとして、これを作動させるにはどのようにしたらいいのでしょうか。 環境はwin xp sp2 office2000です。 過去ログを参考にし、下記記述で001.xlsを開くところまではわかりました。この後をどうすればいいか、よろしくお教えください。 "C:\Program Files\Microsoft Office\Office\excel.exe" "c:\My Documents\001.xls"

  • csv形式のテキストファイルをexcelでCSV化するマクロについて

    今、ひとつのフォルダに大量にCSV形式で保存されているテキストファイルを excelのマクロを使って、ひとつのexcelにCSV形式(.xls)で保存するものを作成している のですが、今までマクロを使ったことがないため、まったく歯が立ちません。 もう少し詳しく書くと、テキストファイルの中身は、 01,54521,18:01:02,110230 というようになってます。 これを、excelのマクロを使い、カンマ区切りで取り込むような感じです。 すみませんが、回答お願いいたします。

  • VBA バッチファイルでコピーできない

    この質問は直近で出した質問を誤って締め切ってしまったため、再質問として書いてます。 以下のマクロを作りましたが、うまくいきません。 フォルダBにあるバッチファイルを実行するだけのマクロで、バッチファイルはフォルダAにあるファイルを自身のフォルダつまりフォルダBにコピーするものです。 マクロ Sub Test() Dim Str As String Str=shell("""" & folderB\batch.bat & """", vbnormalfocus) End sub Batch.batの中身 Copy "folderA\fileA" . '見えにくいですが、最後にピリオドがあります。 folderAやfolderBはそれぞれのフォルダのフルパスです。パスに空白を含むため " で囲むようにしてます。 実行すると、何故かフォルダBでなくてデスクトップにコピーされます。バッチファイルをクリックして直接起動すると、目論見通りフォルダBにコピーされます。コマンドプロンプトからフォルダBに移動し、バッチファイルを起動しても、目論見通りフォルダBにコピーされます。 マクロから起動した時だけ、どうしてデスクトップにコピーされるのでしょうか?

  • エクセル マクロ 特定のフォルダ内 ファイルコピー

    エクセルのセルに入力されたフォルダを参照して、 CSVファイルを シート1・2・3・4に1度にコピーしたいのですが 例えば C\ドキュメント¥フォルダA |-フォルダB |-フォルダC                 |-フォルダD                 |-フォルダE                        |-フォルダ1                             |-CSVファイルA                         |-フォルダ2                             |-CSVファイルB                          |-フォルダ3                             |-CSVファイルC                         |-フォルダ4                              |-CSVファイルD 上記のアドレスで シート1のA1セルに フォルダEを入力し  シート2に CSVファイルA シート3に CSVファイルB シート4に CSVファイルC シート5に CSVファイルD それぞれすべての内容を貼り付けたいのですが 何分初心者なもので ご指導いただければと思います。  ちなみに A1セルの入力は変わるため各シートは1度削除した上で再度貼り付けを行いたいです。     

専門家に質問してみよう