エクセルVBAでテキストファイル(バッチファイルの作成)

このQ&Aのポイント
  • エクセルVBA超初心者のため、テキストファイル(バッチファイル)の作成方法について困っています。C言語しか知らないので、ファイル入出力の記述方法がわかりません。
  • エクセルVBAでボタンを実行して、デスクトップにテキストファイル(バッチファイル)を作成する方法を教えてください。バッチファイルの内容は、サーバー上からプログラムフォルダをダウンロードし、フォルダへ移動してショートカットをデスクトップに作成するというものです。
  • エクセルVBA初心者ですが、テキストファイル(バッチファイル)の作成方法について教えてください。具体的には、ボタンをクリックしたら特定のフォルダをダウンロードして指定の場所に保存し、ショートカットをデスクトップに作成するバッチファイルの作成方法が知りたいです。
回答を見る
  • ベストアンサー

エクセルVBAでテキストファイル(バッチファイルの作成)

エクセルVBA超初心者です。 言語は基本的にC言語しか知りません。 エクセルVBAでボタンを実行したら たとえば以下のような内容のバッチファイルが デスクトップに出来る・・・ というものを作らなくてはいけなくなりました。 色々調べてるのですが、ファイル入出力関連の記述の仕方がまったくわからず、あまり時間がなく困っています。 ちなみにバッチファイルの内容は ↓ REM サーバー上からプログラムフォルダをダウンロードする。 XCOPY \\hk001a24\va\data\ツール配信用\セグメント D:\セグメント /I/Y/F/E REM フォルダへ移動する。 D: CD D:\セグメント REM ショートカットをデスクトップに作成する。 csc.exe "D:\セグメント\入力シート.xls" "?desktop?\セグメント入力シート.lnk" csc.exe "D:\セグメント\出力シート.xls" "?desktop?\セグメント出力シート.lnk" csc.exe "D:\セグメント\出力帳票" "?desktop?\セグメント出力帳票.lnk" exit ↑ ここまで。。。 これをボタン実行後、 test.batというファイルに作成しデスクトップに保存する。 似たようなロジックや参考になるURLがあったら教えてください。 長々とすみません、よろしくお願いいたします。

  • rariko
  • お礼率28% (223/790)

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

  • ベストアンサー
回答No.2

Sub MakeBat() Dim n As Long Dim DesktopPath As String n = FreeFile DesktopPath = CreateObject("WScript.Shell").SpecialFolders("desktop") Open DesktopPath & "\Test.bat" For Output As #n Print #n, "Rem サーバー上からプログラムフォルダをダウンロードする。" Print #n, "XCOPY \\hk001a24\va\data\ツール配信用\セグメント D:\セグメント /I/Y/F/E" Print #n, "Rem フォルダへ移動する。" Print #n, "D:" Print #n, "CD D:\セグメント" Print #n, "Rem ショートカットをデスクトップに作成する。" Print #n, "csc.exe ""D:\セグメント\入力シート.xls""; ""?desktop?\セグメント入力シート.lnk""" Print #n, "csc.exe ""D:\セグメント\出力シート.xls"" ""?desktop?\セグメント出力シート.lnk""" Print #n, "csc.exe ""D:\セグメント\出力帳票"" ""?desktop?\セグメント出力帳票.lnk""" Print #n, "exit" Close #n End Sub

rariko
質問者

お礼

全部ご回答頂きましてありがとうございました。 これからちゃんと勉強していきます。 またよろしくお願いいたします。

その他の回答 (1)

  • PrintScree
  • ベストアンサー率25% (538/2091)
回答No.1

バッチの内容が固定なら、事前に雛型として作成しておき、コマンドボタンクリック時に、雛型のバッチファイルをディスクトップにコピーしてやればよいのでは? そうすれば、VBAでファイルを作成する必要がなくなりますが…

rariko
質問者

補足

すみません、説明が足りませんでした。 バッチの内容は固定ではなく可変なのです。 実行ボタンを押される前にかデータをINPUTしてから 実行する形になるのでプログラムが必要になるのかと・・・

関連するQ&A

  • バッチファイルに日付(ミリ秒まで)をつけたい

    OS: Windows XP あるソフトを使っており、20分おきにexcelシートが自動的に デスクトップ上に「full01.xls」という名前で記録されます。 そこで上書きされないようにするためにバッチファイルを使ってリネー ムするようにしました。 そこで質問ですが新しいexcelシートが出来るたびに出来た時間がわか るようにしたいです。 どのようにすればよいでしょうか? またそれをどこに挿入すればよいか教えていただきたいです。 よろしくお願いします。 @echo off :TOP rem 空きファイル名を検索 set /a N=2 :SEARCH rem 2~9はfull0x, 10以上はfullxxにする set F=full0 if %N% GTR 9 set F=full if not exist %F%%N%.xls goto WAIT set /a N=N+1 goto SEARCH rem full01.xlsが生成されるのを待つ :WAIT echo Search full01.xls :LB1 rem Sleep if not exist full01.xls goto LB1 echo Found full01.xls echo New File = %F%%N%.xls echo Waiting for file write... rem ファイルの書込動作が完全に終るまで待つ set /a M=1 :WAIT2 if "%M%"=="9999" goto RENAME set /a M=M+1 goto WAIT2 :RENAME echo Rename ren full01.xls %F%%N%.xls echo Done. rem ずっと繰り返し goto TOP

  • バッチファイルでExcelを読み取り専用で開きたい

    Excelで「読み取り専用を推奨する」設定のされたファイルをバッチファイルで開こうとすると、 「読み取り専用で開きますか?」ダイヤログが表示されてしまい、 「はい」ボタンを押すまでファイルが開かれず困っています。 複数の上記設定ファイルをバッチファイル1回で開かせたいです。 バッチファイルで開く際に、上記設定のされたファイルでもダイアログが表示されないように読み取り専用で開くコマンドはありますでしょうか? 現在は開きたいファイルのショートカットを作成し、バッチファイルで以下のように実行しています。 start "" "./(ファイル名).xls.lnk" コマンドの最後に“ /r”をつけてみたのですが、ダイアログが出てしまいました。 回答ではコマンドをそのまま書いていただけると助かります。 よろしくお願いいたします。

  • バッチファイルからVBAに引数を渡したい

    お世話になります。 a.batというバッチファイルがあります。 このファイルを起動させた時にABC.xlsというEXCELが起動するようにしたいのですが、その際にバッチファイル側から"1303"という文字列をabc.xlsに引数として渡したいのです。 EXCEL側ではauto_open(a)で待ち受けて、このaに"1303"が入ってmsgで"1303"と表示させたいのですが、引数は省略出来ません、というエラーが出てしまいます。 どなたかやり方をご教授いただけませんでしょうか?よろしくお願い致します。 環境 WindowsXP SP3 Excel2003 ============================== バッチファイル側 ============================== @echo off echo バッチファイルを実行します。 ABC.xls "1303" echo 終了しました。 ============================== EXCEL VBA側 ============================== Sub auto_open(a As String) Msg a end sub

  • EXCEL VBAで別ファイル作成

    エクセル97です。 エクセルファイル AAA.xls のすべてのワークシートのうち、セルA1に TRUE がはいっているもの、(枚数はそのときにより不定です。)のみをコピーして、別のエクセルファイルを作成したいのです。 その際、新しいファイルに貼り付けるのは書式と値のみで、シート名は 元ファイルのシート名と同じにしたいのです。 どのようなVBAを書けばよいかご教示ください。 (AAA.xls にはワークシート以外にグラフシートやダイアローグシートが入っています。)

  • VBA で EXCELファイルをインポート

    VBAに詳しい方お助けください。VBAを使用して、データベースをつかってインポート(データベースファイルを開かずにデータの取り込み)を行いたいのですが良く分かりません。データベースは一つはCSVファイル、一つはXLSファイルです。取り込み先のEXCELファイルのSHEET1にCSVファイルのデータベース(SHEET1)、取り込み先のEXCELファイルのSHEET2にXLSファイルファイルのデータベース(SHEET1)とインポートするにはどのようなVBAの記述が必要ですか?色々と調べているのですがうまく行きません。EXCELは2003を使用しています。

  • バッチファイルでエクセルが表示できない

    ※「\」はすべてエンマークで入力しているとみなしてください。 下記ディレクトリにある「TestBook.xlsx」というエクセルブックを開くバッチファイルを作ろうと考えています(OSはWindows7 Professional 64bit)。 D:\TestBookFolder 試しに作ってみたバッチファイルの中身は下記の通りです。 ~~~~~~~~~~~ cd/d D:\TestBookFolder doskey excl = for %1 in ($*) do "C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE" %1 @echo off rem exclは自分で定義した変数 excl TestBook.xlsx ~~~~~~~~~~~ しかしながらこれを実行すると、一瞬コマンドプロンプトの画面が見えるだけで エクセルは全く表示されません。何が間違っているのでしょうか?

  • VBAでエクセルからエクセルのファイルを開くには?

    D:\に db1.mdb Book1.xls があります。 db1.mdbのフォームのコマンドボタンをクリックして Book1.xlsを開きたいのですが VBAコードをご教授いただけますか? (マクロではなくVBAコードが知りたいです) エクセルからエクセルのファイルを開くなら Workbooks.Open ファイルのフルパス で出来ました。 ご回答よろしくお願いします。

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

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

  • Excel VBA ファイルをまとめる

    Excel2003にてフォルダにある複数ファイル(8個)の各1番左のシートを 指定したファイルにまとめるVBAを組みたいと思います。 まとめる際、ファイル名の一部を取得し、シート名にしたいのですが可能でしょうか? 例: ファイル名:20110927_△△△△株式会社.xls ⇒ シート名:△△△△株式会社 ※ファイルの個数は固定ですが、年月の部分は変わります。 簡単なVBAの経験しかなく、キーワード検索でもしっくりこないものばかりで どのようにコードを記述してよいのか非常に困っています。

  • エクセルVBAでテキストを出力したい

    エクセルVBAでテキストを出力したいのですが、 やり方がわからないので教えてください。 仮にSheet2のA列に文章があるとして、 シート全体を1つのテキストファイルとして出力し、 ファイル名をSheet1のA1セルにしたいです。 同じような質問もあるのですが、ファイル名に関しては、 ちょっと見当たらなかったので質問しています。

専門家に質問してみよう