C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: Windows上の操作を一括処理したい。


(過去ログ 92 を表示中)

[トピック内 13 記事 (1 - 13 表示)]  << 0 >>

■55007 / inTopicNo.1)  Windows上の操作を一括処理したい。
  
□投稿者/ おん (6回)-(2010/11/14(Sun) 00:43:37)

分類:[Windows 全般] 

開発環境:windows7
お世話になります。
現在、C言語で書かれたプログラムを実行してコマンドプロンプトに表示された結果から、
求めたい数値を探して、その値をエクセルに張り付けるという作業を行っております。

1回の作業におよそ1〜2時間くらいかけて行っているため、手間がかかります。
そこで、質問です。Windows上の処理を一括して行うことは可能でしょうか?

たとえば、コマンドプロンプト上で、エクセルのA1セルからA100セルまで、
C言語を実行した結果の一部を張り付ける作業を一括して行うことは実現可能でしょうか?

よろしくお願い致します。
引用返信 編集キー/
■55008 / inTopicNo.2)  Re[1]: Windows上の操作を一括処理したい。
□投稿者/ .SHO (1373回)-(2010/11/14(Sun) 08:14:46)
No55007 (おん さん) に返信

> たとえば、コマンドプロンプト上で、エクセルのA1セルからA100セルまで、
> C言語を実行した結果の一部を張り付ける作業を一括して行うことは実現可能でしょうか?

「実行結果の一部」というのが、少し気になりますが
実現可能かどうかなら、まず実現可能だと思います。
(簡単かどうかは別として)
引用返信 編集キー/
■55009 / inTopicNo.3)  Re[2]: Windows上の操作を一括処理したい。
□投稿者/ おん (7回)-(2010/11/14(Sun) 08:51:07)
No55008 (.SHO さん) に返信
>
>>たとえば、コマンドプロンプト上で、エクセルのA1セルからA100セルまで、
>>C言語を実行した結果の一部を張り付ける作業を一括して行うことは実現可能でしょうか?
>
> 「実行結果の一部」というのが、少し気になりますが
> 実現可能かどうかなら、まず実現可能だと思います。
> (簡単かどうかは別として)


すいません、もう少しわかりやすく記述しますのでお分かりになられる方お願い致します。
C言語を実行するコマンドがあります。このコマンドをコマンドプロンプト上で実行すると
プログラムの実行結果が表示され、私は表示された一番下の行の27.5515212という数字をコピーないしは記憶して、
エクセル2007のセルA1〜セルA100までに毎回貼り付けます。その後、統計的な処理を行うのですが、
この一連の流れを一括で処理するためにはどのようにすればよいでしょうか?

引用返信 編集キー/
■55010 / inTopicNo.4)  Re[3]: Windows上の操作を一括処理したい。
□投稿者/ .SHO (1374回)-(2010/11/14(Sun) 09:42:28)
No55009 (おん さん) に返信

やり方はいろいろあるでしょう。

A1からA100に入ればいいのなら、簡単にやるなら
表示される一番下の行の27.5515212という数字を
csvファイルに吐き出すようにしてはどうでしょう?
引用返信 編集キー/
■55011 / inTopicNo.5)  Re[3]: Windows上の操作を一括処理したい。
□投稿者/ 魔界の仮面弁士 (1930回)-(2010/11/14(Sun) 10:54:08)
No55009 (おん さん) に返信
> C言語を実行するコマンドがあります。
C言語で作成されたコンソールアプリケーションを実行する、という意味でしょうか?

> この一連の流れを一括で処理するためにはどのようにすればよいでしょうか?
自動実行させるなら、何らかのプログラムを用意する必要がありそうです。

(案1) 標準出力を取り出せる言語(VB.NET、C言語、秀丸マクロ等)を利用して実行し、
 取得された文字列(の最終行)を取り出して、テキストファイルとして保存する。

(案2) コンソールアプリ側を修正して、実行結果の一番下の行に相当するデータを
 テキストファイルに追記するように改修し、その実行結果ファイルを Excel で開く。

(案3) コマンドからの標準出力をファイルにリダイレクトさせるようにしておき、
 その実行結果ファイル群の最終行の内容を Excel VBA を用いて抽出してセルに転記する。
引用返信 編集キー/
■55012 / inTopicNo.6)  Re[4]: Windows上の操作を一括処理したい。
□投稿者/ 魔界の仮面弁士 (1931回)-(2010/11/14(Sun) 11:07:08)
No55011 (魔界の仮面弁士) に追記
> 自動実行させるなら、何らかのプログラムを用意する必要がありそうです。

Excel VBA のサンプルがありました。
http://officetanaka.net/excel/vba/tips/tips27.htm

Excel から任意のコマンド(DIR/TREE/NSLOOKUP 等)を実行し、それを
Excel のセルに転記したり、メッセージボックスに表示させたりしています。
引用返信 編集キー/
■55015 / inTopicNo.7)  Re[3]: Windows上の操作を一括処理したい。
□投稿者/ やじゅ (1773回)-(2010/11/14(Sun) 12:26:06)
やじゅ さんの Web サイト
No55009 (おん さん) に返信
> C言語を実行するコマンドがあります。
実行する上で、毎回、何らかパラメータを渡しているのですか?

> プログラムの実行結果が表示され、私は表示された一番下の行の27.5515212という数字をコピーないしは記憶して、
その最終行には、数値のみ出力されているということでいいですか?

> エクセル2007のセルA1〜セルA100までに毎回貼り付けます。その後、統計的な処理を行うのですが、
> この一連の流れを一括で処理するためにはどのようにすればよいでしょうか?

魔界の仮面弁士さんが示してくれたように、VBAでShellを使って標準出力の最終行の結果を取得すれば出来ます。

最終行の取得はいろいろ方法がありますが、各行が改行されているならReadAllで読んでSplit関数で改行文字で
分割する方法でやってみるといかも。
引用返信 編集キー/
■55016 / inTopicNo.8)  Re[4]: Windows上の操作を一括処理したい。
□投稿者/ おん (8回)-(2010/11/14(Sun) 20:55:43)
おんです。
お返事遅くなりまして申し訳ありません。

■魔界の仮面弁士さま

URL拝見いたしました。どうもありがとうございます。
コマンドプロンプトを操作したことがあまりなかったので大変参考になりました。
このページのVBAプログラムとコマンドプロンプトを調べて実践してみます。
VBAは今まで使ったことがなかったのですが、非常に便利な言語ですね。

■やじゅさま

毎回パラメータを渡しているといいますか、C言語のプログラム内でランダム値を毎回生成しているので毎回値は変わります。
また、プログラムの出力内容については、数値のみ出力されるわけではありません。
しかし、数値のみ出力することは可能です。
ですので「VBAでShellを使って標準出力の最終行の結果を取得すれば出来ます。」
とのお言葉大変参考になりました。

VBAとshellについて調べておきたいと思います。
みなさまお忙しい中ありがとうございました。
引用返信 編集キー/
■55054 / inTopicNo.9)  Re[5]: Windows上の操作を一括処理したい。
□投稿者/ おん (9回)-(2010/11/16(Tue) 07:43:58)
おんです。
まだ未解決です。
もう少し具体的なアドバイスがあれば、お願いします。
(shellに関してはこの本がおススメなど)

お返事を返すのが遅くなってしまいますが、必ず返信しますので、
よろしくお願い致します。
引用返信 編集キー/
■55085 / inTopicNo.10)  Re[6]: Windows上の操作を一括処理したい。
□投稿者/ 魔界の仮面弁士 (1939回)-(2010/11/16(Tue) 16:21:24)
No55054 (おん さん) に返信
> もう少し具体的なアドバイスがあれば、お願いします。
VBA の基本的な使い方で戸惑っているのか、あるいは、
コーディングの途中で問題が発生したのか、それとも、
参考にしている資料の中に不明瞭な点があるのかなど、
どこが分からないかを説明してもらわないと、そもそも
何を教えれば良いのかが分からないので、
これ以上に具体的なアドバイスをするのは難しいです。

概要の説明ぐらいならばできますが、現段階では
コーディング代行のようになりかねませんし、正直なところ、
今の質問の仕方のままでは、先の URL 以上のサンプルは出せないです。


> (shellに関してはこの本がおススメなど)
これがどの shell の事を指しているのか、という問題もありますね。

「(VBA の)Shell 関数」では、外部プログラムを起動する事まではできますが、
その結果を取得するのには不向きです。

標準出力を得る場合には、先述した URL にもあるように、
「CreateObject("WScript.Shell")」というコードで得られる
WshScriptExecオブジェクトのExecメソッドを使うのが便利です。
WshScriptExec オブジェクトについて調べてみてください。
引用返信 編集キー/
■55087 / inTopicNo.11)  Re[7]: Windows上の操作を一括処理したい。
□投稿者/ 熊谷隆史 (1回)-(2010/11/16(Tue) 16:54:02)
田中氏のサイトよりもう少し、詳しく解説されてます(YU-TANG氏のサイト)。
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsGetDosResult.html

# C側のコードに手を入れた方が、早いのではとも思ったりする。

引用返信 編集キー/
■55092 / inTopicNo.12)  Re[8]: Windows上の操作を一括処理したい。
□投稿者/ PATIO (55回)-(2010/11/16(Tue) 18:43:13)
No55087 (熊谷隆史 さん) に返信
> 田中氏のサイトよりもう少し、詳しく解説されてます(YU-TANG氏のサイト)。
> http://www.f3.dion.ne.jp/~element/msaccess/AcTipsGetDosResult.html
>
> # C側のコードに手を入れた方が、早いのではとも思ったりする。

御意。
Cのプログラムを修正できるのであれば、一気に100回分処理して
結果だけを改行区切りで出力すれば、貼り付けなくてもエクセルで
CSVファイルとして読み込むだけでOKだと思います。
そこから先は煮るなり焼くなり。

引用返信 編集キー/
■55207 / inTopicNo.13)  Re[9]: Windows上の操作を一括処理したい。
□投稿者/ おん (10回)-(2010/11/20(Sat) 11:40:05)
■回答者様へ

ご回答どうもありがとうございます。
勉強不足でした。もう少し力をつけたいと思います。

本当にありがとうございました。
お返事遅くなりまして申し訳ありません。

おん
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -