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

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

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

Re[6]: あるデータをプログラムで解析し結果を秀丸に出力したい


(過去ログ 102 を表示中)

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

■60607 / inTopicNo.1)  あるデータをプログラムで解析し結果を秀丸に出力したい
  
□投稿者/ ITB5259 (6回)-(2011/07/12(Tue) 15:40:29)

分類:[.NET 全般] 

 下記のSTAN-V9(アプリケーション)を起動させデータはEX-003をデータとしSTAN-V9このプログラムで解析した結果を
秀丸「HIDEMARU\HIDEMARU.EXE」に出力したい。
個々には出来るのですが一連が今できません。
この一連を繰り返し行いたいのですがどうしたらよいですか



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'Shell 関数を使ってファイルを読み込んだ状態で他のアプリケーションを起動する

Dim procID As Integer
procID = Microsoft.VisualBasic.Interaction.Shell( _
"C:\Program Files\KKE\STAN-V95\STAN-V9.EXE \SAMPLE\EX-003.dat", AppWinStyle.NormalFocus)

' "NotePad.exe C:\TESTA\印刷.TXT", AppWinStyle.NormalFocus)
' "NotePad.exe C:\Program Files\STAN-V8\SAMPLE\EX-003.dat", AppWinStyle.NormalFocus)
' strPass = "C:\Program Files\STAN-V8\STAN-V8.EXE C:\Program Files\STAN-V8\SAMPLE\EX-E003.dat " '---A
' "C:\Program Files\HIDEMARU\HIDEMARU.EXE C:\TESTA\印刷.TXT", AppWinStyle.NormalFocus)
' strPass = "C:\Program Files\HIDEMARU\HIDEMARU.EXE" '---A


End Sub

引用返信 編集キー/
■60608 / inTopicNo.2)  Re[1]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ PATIO (118回)-(2011/07/12(Tue) 16:32:29)
No60607 (ITB5259 さん) に返信
>  下記のSTAN-V9(アプリケーション)を起動させデータはEX-003をデータとしSTAN-V9このプログラムで解析した結果を
> 秀丸「HIDEMARU\HIDEMARU.EXE」に出力したい。
> 個々には出来るのですが一連が今できません。
> この一連を繰り返し行いたいのですがどうしたらよいですか

STAN-V9なるアプリケーションの仕様が分からないことにはなんともと言ったところですね。
あと、秀丸に出力したいと書かれていますが、正確にはSTAN-V9が出力したテキストファイルを
秀丸で表示したい(?)ですかね。
処理全体のイメージは書かれている内容でよいのだと思いますが、
実際にプログラミングする為にはもう一歩踏み込んで細かい処理に落とし込まないと
プログラムで記述できません。

一連の作業を連続で行なう場合、秀丸で表示した後の秀丸の終了は手動で行なうとしても
STAN-V9というアプリケーションが終了する為にユーザーの入力が必要な状態だと
そこでプログラムが止まってしまいます。処理結果を指定したテキストファイルに出力して
自動で終了するのであれば、その後の処理に進めると思いますけれど。
今書かれている内容ではこうすれば良いというレスは期待できないと思いますよ。

引用返信 編集キー/
■60609 / inTopicNo.3)  Re[1]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ shu (841回)-(2011/07/12(Tue) 16:56:28)
No60607 (ITB5259 さん) に返信

        Dim ExeArgs()() As String = New String()() {New String() {"a.exe", "arg1"}, _
                                                    New String() {"b.exe", "arg2"}, _
                                                    New String() {"c.exe", "arg3"}}
        For Each ExeArg() As String In ExeArgs
            Dim pr = Process.Start(ExeArg(0), ExeArg(1))
            pr.WaitForExit()
        Next

こんなんでどう?
Shellは互換の為にあるようなものだからProcess使ったほうがいいですよ。(多分)
関連付けがしてあれば、例えば
Process.Start("abc.txt")
で実行可能

引用返信 編集キー/
■60611 / inTopicNo.4)  Re[2]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ 逆運の覇者 (27回)-(2011/07/12(Tue) 17:11:27)
何が問題なのか、具体的にどうしたいのかがまるでわかりません。
引用返信 編集キー/
■60614 / inTopicNo.5)  Re[3]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ ITB5259 (7回)-(2011/07/12(Tue) 19:21:40)
一応処理の流れは
1 建物の解析データ(CSV)を読み込む(秀丸等)
2 STANは連立方程式解析プログラムで1のデータを用い解析を行う
3 解析結果を秀丸に出力
4 VB(VBA)で解析結果(秀丸)の内容吟味しその結果を1番の解析データ(CSV)の部分的書き換えを行う
5 2番の作業を行う

上記の繰返しを100回-500回程度行う。上記が大雑把な流れです。
大きな問題はデータのやり取りとSTANの起動の問題です。

ShellでSTANは立ち上りますがデータを引きこまない。友人によると計算はデータは引き込めば計算は行う。
プログラムはCALL 文とSUNルーチンが良いような話です。

引用返信 編集キー/
■60615 / inTopicNo.6)  Re[4]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ 魔界の仮面弁士 (2245回)-(2011/07/12(Tue) 20:14:01)
No60614 (ITB5259 さん) に返信
>> STAN-V9
# STAN/3D シリーズの事だとしたら、V9.5 への切り替えが必要とされていたような。


> 1 建物の解析データ(CSV)を読み込む(秀丸等)
秀丸『等』というのが気になりますが、アプリケーションの起動も制御する必要があるのでしょうか。

アプリケーションの起動自体は、Process.Start メソッドで行えます。
コマンドライン引数でファイル名を渡せば、大抵のソフトはそれを読み込んでくれるでしょう。
また、起動したアプリケーションが閉じられるまでの間、
次の処理を待ち合わせるようにすることもできます。
http://dobon.net/vb/dotnet/process/openfile.html


> 2 STANは連立方程式解析プログラムで1のデータを用い解析を行う
ここは STAN 側の話でしょうから、今回の質問とは別件ですね。
STAN の起動も制御する必要があるのでしょうか。それともここは手動操作?


> 3 解析結果を秀丸に出力
STAN 側が、解析結果をどのように出力するのか
(あるいは、STAN にどのように出力させるのか)にもよるでしょう。

結果がテキストファイルとして保存されるなら、それを
秀丸等に読み込ませるだけなので、手順 1 がそのまま使えます。
秀丸なら、/b オプション(閲覧モード)や /r オプション(書き換え禁止)を使えば
解析結果を読み取り専用として開かせることもできますね。

あるいはクリップボード経由でのコピーなら、Clipboard クラスで読み取り、
それをテキストファイルとして保存してやることで、秀丸等に表示させられるかと。

秀丸に表示する事が目的なのでは無く、ファイルの内容を VB で読み込むことが
目的なのであれば、File.ReadAll何某() のメソッドを使うか、もしくは
System.IO.FileStream 等を使う事で、ファイルの内容を読み取れます。


> 4 VB(VBA)で解析結果(秀丸)の内容吟味しその結果を1番の解析データ(CSV)の部分的書き換えを行う
VB.NET なのか VBA なのかハッキリさせた方が良いですよ。
言語的には似ていますが、使用するコードはそれぞれ異なりますし。
(今回は .NET 系の質問のようなので、VBA の話は避けておきます)

それと…解析結果を吟味するのはユーザーですか? それとも VB で解析するのでしょうか?
解析元の CSV データを編集するのはユーザーですか? それとも VB で CSV を書き込むのでしょうか?


> ShellでSTANは立ち上りますがデータを引きこまない。
Shell だと空白入りのパスの扱いが厄介だったりするので、できれば
Process クラスを用いた方が良いですよ。

で……STAN 側に、コマンドライン指定でデータファイルを渡せる機能はありますか?

もしも起動時に、コマンドラインでパラメーターを渡せないようであれば、
 (1) Process クラスで STAN を起動する。
 (2) Process.MainWindowHandle プロパティで STAN のハンドルを得る
 (3) IAccessibleObject インターフェイス、SendMessage API、PostMessage API、
  SendInput API などを駆使して、STAN のメニューやテキストボックス等を制御する。
といった力技な方法が必要になってくるかもしれません。


> 友人によると計算はデータは引き込めば計算は行う。
> プログラムはCALL 文とSUNルーチンが良いような話です。
SUNルーチン…。 Subroutin / Subルーチンのことでしょうか。
引用返信 編集キー/
■60620 / inTopicNo.7)  Re[5]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ 逆運の覇者 (31回)-(2011/07/12(Tue) 21:45:28)
やっと要点が見えてきました。
STAN-V9にdatファイルを指定して起動しているのに、
そのファイルが読み込まれないのが問題というわけですね。

>ShellでSTANは立ち上りますがデータを引きこまない。友人によると計算はデータは引き込めば計算は行う。
それならSTAN-V9に渡している\SAMPLE\EX-003.datの部分が怪しいです。
これで正しいのかどうかを
マニュアルで確認するなり、開発元に問い合わせるなりしたほうがいいと思います。
建築関係のソフトはプログラマにとって常識的なソフトではありませんから。

ITB5259さんはもしかして、他のソフトウェアが同じ方法でファイルを読み込むのだから
STAN-V9も同じように\SAMPLE\EX-003.datで読み込むだろうと思い込んでいるだけだったりしませんか?
もし、STAN-V9が引数を受け取って処理するように作られていなければ
それでは無理ですよ。
引用返信 編集キー/
■60621 / inTopicNo.8)  Re[1]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ shu (842回)-(2011/07/12(Tue) 22:39:23)
No60607 (ITB5259 さん) に返信
>  下記のSTAN-V9(アプリケーション)を起動させデータはEX-003をデータとしSTAN-V9このプログラムで解析した結果を
> 秀丸「HIDEMARU\HIDEMARU.EXE」に出力したい。
> 個々には出来るのですが一連が今できません。
この個々というのは

> 1 建物の解析データ(CSV)を読み込む(秀丸等)
> 2 STANは連立方程式解析プログラムで1のデータを用い解析を行う
> 3 解析結果を秀丸に出力
> 4 VB(VBA)で解析結果(秀丸)の内容吟味しその結果を1番の解析データ(CSV)の部分的書き換えを行う
> 5 2番の作業を行う
この個々とは異なるのでしょうか?この中で疑問点があります。
1について秀丸に読み込むことにどういう意味があるのか?
2についてSTANというのは秀丸上のテキストを読むことが出来るのか?CSVファイルを読むのではないのか?
3について秀丸に出力することにどういう意味があるのか?テキストファイルへの書き込みでは駄目なのか?
4について吟味しというロジックは自動化できるのか?人間が行うのか?

今実現出来ている個々を提示されたほうがよいかと思います。

ちなみに魔界の仮面弁士さんの言うように
> Shell だと空白入りのパスの扱いが厄介だったりするので、できれば
Shell("""C:\Program Files\STAN-V8\STAN-V8.EXE""〜
のようにダブルクォーテーションで括った文字列が渡されないといけないです。

まずは実現出来ていることをすべて列挙されたほうがよいと思います。
引用返信 編集キー/
■60625 / inTopicNo.9)  Re[2]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ 魔界の仮面弁士 (2247回)-(2011/07/12(Tue) 23:03:46)
No60621 (shu さん) に返信
> 1について秀丸に読み込むことにどういう意味があるのか?
> 2についてSTANというのは秀丸上のテキストを読むことが出来るのか?CSVファイルを読むのではないのか?
> 3について秀丸に出力することにどういう意味があるのか?テキストファイルへの書き込みでは駄目なのか?
> 4について吟味しというロジックは自動化できるのか?人間が行うのか?

私の想像:

0)STAN というのは、 http://www4.kke.co.jp/stan/ のことではないか?
 (入力はカンマ区切りの .dat ファイル、結果は .csv らしい?)

1)ユーザーは、解析元データを秀丸(のCSVモード)で手動編集している?
 (Excel で編集すると、フォーマットが崩れてしまうかも)

2)その解析元データ(.dat)ファイルを STAN に渡して解析させる仕様?
 (この部分が手動になるのか自動化できるのかは不明)

3)解析結果ファイル(.csv)を再度秀丸に渡すのは、編集目的では無く結果表示のため?
 (解析結果を吟味した上で、ユーザーが .dat ファイルを編集する?)


> 今実現出来ている個々を提示されたほうがよいかと思います。
> まずは実現出来ていることをすべて列挙されたほうがよいと思います。
# 大事なことなので二回(以下略
引用返信 編集キー/
■60630 / inTopicNo.10)  Re[3]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ ITB5259 (8回)-(2011/07/13(Wed) 05:03:38)
魔界の仮面弁士様
まだ初心者ですので確認していきます。
SUNルーチン(誤記ですSub)…。 Subroutin / Subルーチンのことでしょうか。
STAN はこのプログラムです- http://www4.kke.co.jp/stan/

逆運の覇者様
確認します

Shu様
1)各アプリケーション等毎にデータのやり取りの都合上です。STANの出力がテキスト(秀丸)でできると思います。
2)STANのデータもVBA VBの計算も全てテキストですそこで秀丸が便利という事です。
3)データ入力にはSTAN テキストの(、)付きをデータとする方法と一般的な対話形式が有ります。
  1)回答は1と同じ内容です
4)今まで全てSTANは手動です。

元々、STANは対話処理でデータを入力し1回計算のプログラムです。
しかし、今大きな建物は崩壊形を計算する事が義務付けられています。
四角い建物は一貫計算というプログラムがありそれで計算ができます。
問題は特殊形です東京国際フォーラム、幕張メッセ等特殊形は解けません。
解析方法は
1) STANのような特殊形を解けるプログラムで限りなくやる1000回計算等する
2) 外国のプログラムでフレーム計算のみ行い。個々(部分的)の計算はVB(VBA)でおこなう

今まで、STAN は手動 データ取込みと2次的解析はVBAで行っていました。
ただ計算回数が多すぎVB等で自動しかない。と判断しました。
問題は、データ処理、とSTANの起動です。

外国のプログラムも考えていますが判定機関が耐震偽装問題で厳しくなり付属の計算項目が多くなりすぎまだSTANの利用の方が楽かと思います。

追記
皆さま回答ありがとうございます。


引用返信 編集キー/
■60631 / inTopicNo.11)  Re[1]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ やじゅ (1926回)-(2011/07/13(Wed) 07:17:17)
やじゅ さんの Web サイト
No60607 (ITB5259 さん) に返信
>  下記のSTAN-V9(アプリケーション)を起動させデータはEX-003をデータとしSTAN-V9このプログラムで解析した結果を
> 秀丸「HIDEMARU\HIDEMARU.EXE」に出力したい。

プログラムにこだわらず、マウスやキー入力の操作を自動で行うアプリケーション
例えば、「UWSC」を使ってみてはどうでしょう。
http://www.uwsc.info/index.html

引用返信 編集キー/
■60633 / inTopicNo.12)  Re[2]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ ITB5259 (9回)-(2011/07/13(Wed) 08:27:46)
やじゅ 様
回答ありがとうございます。

1)手動では現実的に小規模建築以外は無理です。
2)UWSCはさんざん試みました。なんとかデータの読込までは行けたと思いますが
 計算の実行までは無理でした。
 
 友人が外国(フランス)のプログラムでなんとか稼働させています。ただ実務では多少の無理が有り
人に助けを求め日本の一貫計算プログラムでなんとか事なきを得たようです。
 東京国際フォーラムの設計者はSTANの姉妹品:韓国製を用いて設計してるようです。
参考に試作プログラムを借りましたがなかなか日本と外国は違うという感じです。
 昔DOS時代ではなんでも簡単に計算は出来ました。今、本職の方よりプログラムのシステムの理解のが
難しい感じです。
 
引用返信 編集キー/
■60634 / inTopicNo.13)  Re[4]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ shu (845回)-(2011/07/13(Wed) 08:43:53)
No60630 (ITB5259 さん) に返信

> Shu様
> 1)各アプリケーション等毎にデータのやり取りの都合上です。STANの出力がテキスト(秀丸)でできると思います。
> 2)STANのデータもVBA VBの計算も全てテキストですそこで秀丸が便利という事です。
> 3)データ入力にはSTAN テキストの(、)付きをデータとする方法と一般的な対話形式が有ります。
>   1)回答は1と同じ内容です
> 4)今まで全てSTANは手動です。
ITB5259 さんの言っているテキストというのはテキストファイルということでよろしいですか?秀丸が登場してテキストというと
編集画面に表示されている文字の集まりを指すことも出来ます。紛らわしいのでファイルにはファイルと付けられたほうがよろしいかと
思います。この意味でもう一度 No60621 の内容を読んでみて貰えますか?(このレスでのCSVファイルはテキストファイルと置き換えて
貰ってもいいです)

秀丸で開いて必要な部分をコピーしてSTANに貼り付けているのですか?それとも秀丸で開いて編集をして保存したファイルを
STANで読み込んでいるのですか?前者ならどのような判断でどの部分をコピーして貼り付けを行っているかが明確にならないと
自動化は出来ません。後者ならどのような手順で編集を行いどういう方法でSTAN上でファイルを開いているのか明確にならないと
自動化は出来ません。どちらでも手順が明確になれば秀丸は不要になります。

引用返信 編集キー/
■60635 / inTopicNo.14)  Re[3]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ ITB5259 (10回)-(2011/07/13(Wed) 09:10:38)
Shu様
テキストファイルです。(単なるデータです。)秀丸は一貫計算等10階程度の
マンションの設計で計算用データを作る為に購入した物です。

今までしていたことは、STANで対話データ入力し計算結果はテキストファイルで
うちだされます。それをVBAに全て取込みます。(Sheet1)
VBAで(Sheet2)に必要なデータを抜き取り必要な場所に置き換えます。
その後は(Sheet2)を解析データとしてVBAで計算します。
計算結果は(Sheet3)に出力し計算の第1回とします。
その結果をみてSTANの一部のデータを対話形式で変更し計算します。
後はその繰り返しです。

引用返信 編集キー/
■60641 / inTopicNo.15)  Re[4]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ PATIO (119回)-(2011/07/13(Wed) 11:37:26)
2011/07/13(Wed) 11:46:30 編集(投稿者)

まず、「秀丸に出力」と言う考え方をやめた方が良いと思います。
秀丸はあくまでもテキストエディタです。
秀丸に直接出力する事はできないと思います。
この辺をまとめて書いてしまうと話が通じにくいです。
できる限り個々の処理を分解して箇条書きにした方がいいです。


> 1 建物の解析データ(CSV)を読み込む(秀丸等)
STANにデータを引き渡す事が目的ならば、秀丸で読み込むのは意味が無いと思います。
読み込む目的は何でしょう?秀丸でデータを修正することですか?
ならば、もっと処理を細かく分解して書いてみましょう。
例えば、

1 建物の解析データ(CSV)を読み込む(テキストエディタ)(自動)
2 必要なら建物の解析データ(CSV)をエディタで修正する(手動)
3 修正済みの建物の解析データをCSV形式に出力する(手動)
4 出力したデータをSTANで読み込み、解析を行い、結果はCSVファイルに出力。(自動)
等々


> 4 VB(VBA)で解析結果(秀丸)の内容吟味しその結果を1番の解析データ(CSV)の部分的書き換えを行う
秀丸はアプリケーションの名前です。(具体的にはテキストエディタの名前)
解析結果のCSVファイルの内容吟味をVBでしたいという話なら秀丸は関係ありません。
VBのプログラム自身でCSVファイルの読込を行い、読み込んだ結果を解析して内容が吟味できる形にし、
内容吟味のプログラムに吟味した結果を何らかの形で出力する必要があります。
勿論、内容を吟味するプログラムは別途作成が必要です。
秀丸をVBでどうにかコントロールして内容吟味をさせようと思っているならやめた方が良いです。
秀丸エディタのマクロを使ってプログラムを組んで秀丸自身に処理させるならわかりますが、
秀丸エディタにVBAは使えません。

STANに解析データを引き渡す為の手段をはっきりさせないと話が先に進みません。
この部分はSTANを実際に持っている人がマニュアルなり、解説書なりをみて確認するしかないです。
普通に考えれば、起動時のオプションとして引き渡せそうな気もしますが、
もしそういう機能が用意されていないならSTANにデータを自動で引き渡す事自体が無理だと思います。
現在の作業内容をみているとSTANへのデータの入力は手作業でデータを一つ一つ入力しているように
見えます。もしそういう入力方法しかないなら自動化は多分無理です。(よっぽどの手段を使わない限りは)
自動化するには少なくともSTAN自身にデータを引き渡す手段が手動入力以外に存在しないと
まず無理と考えてください。

> 昔DOS時代ではなんでも簡単に計算は出来ました。
> 今、本職の方よりプログラムのシステムの理解のが難しい感じです。
今でもコンソールプログラムだけで処理をしてしまうならDOSの時代と大して変わりません。
ただ、時代の流れでコンソールプログラムが廃れてGUIのプログラムがメインになってしまっていますから
これらをうまく使いこなす為にはそれなりの知識が必要なると思います。
こればっかりは勉強して対応するしかないですね。

引用返信 編集キー/
■60661 / inTopicNo.16)  Re[5]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ ITB5259 (11回)-(2011/07/14(Thu) 09:29:50)


 皆さま回答ありがとうございました。
少し頭を冷やし再度検討しようと思います。
一応今回完了とし、仕切り直しします。

引用返信 編集キー/
■60782 / inTopicNo.17)  Re[6]: あるデータをプログラムで解析し結果を秀丸に出力したい
□投稿者/ ITB5259 (21回)-(2011/07/19(Tue) 05:41:09)
 STAN自体の自動化に関して
は難しい問題が多く友人にVBの方を自動を強化したら
言われ、VBAは一応ほぼ形になっているのでそれをVBに書き換えしていきます。
問題はデータの扱いが非常に難しくVBとVBAが同じであれば問題は無いのですが
データ処理に苦戦すると思います。

今後もよろしくおねがいたします。

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -