- ベストアンサー
VBA?C?なにを使えばよいでしょうか
あるアプリケーションにデータ登録をするときに、現在はコマンドプロントから コマンド(c:\>xxxxx -***** "name" "age" ・・・・)を打って登録しています。 最近急に、データ量が増えて手動で登録するのが困難になってきました。 現在このデータはエクセルで保存してあります。これからも、エクセルで 管理していく予定です。 そこで、エクセルに入力したものをエクセルVBAを使ってセルからデータを 取り出して、1件づつ自動でアプリケーションに登録するコマンドを発行したい と考えています。 それか、エクセルのデータをCSV形式にしてC言語で作ろうかとも思っています。 実現したいことは ・データはエクセルで管理している。 ・毎回手動でコマンドをたたいていたのを、プログラムで実現させたい。 (DOSにコマンドを発行する) ・データの入力はCSVを読むか、エクセルシート上でセルからひっぱって くるか。 VBA、Cともに初心者です。どの言語でどういう風な形で プログラムを作ればよいかわからず困っています。 実現するよい方法をおしえてください。よろしくおねがいします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
エクセルあるデータというのは「"name" "age" ・・・・」の部分なんでしょうか、そうでしたら「c:\>xxxxx -***** 」の部分を先頭にくっつけて、バッチファイルにしてみたらどうでしょう。 例えばA1にname,B1にageがあればC1に ="c:\>xxxxx -***** " & A1 & " " & A2 ・・・・・・ という具合にし、C列をコピーし、テキストファイルに貼り付け拡張子batで保存すれば完了です。 もちろん「C列をコピーし、テキストファイルに貼り付け・・・」の部分を自動化するともっと楽になります。 あとは、コマンドが正常に出来ていることを確認してから、ダブルクリックで実行です。
その他の回答 (5)
- redraft
- ベストアンサー率16% (9/55)
EXCEL VBAでsheet dataをshellコマンドを使って直接流し込むだけ じゃダメなんですか? 以下、サンプル Sub test() tx = "c:\ec.bat xx" retval = Shell(tx) End Sub c:\ec.bat の中身 echo %1 > c:\ec.log
- toysmith
- ベストアンサー率37% (570/1525)
私なら… VBかC++(VC++/MFCかC++Builder/VCL)かDelphi。 ExcelのデータをCSV化すること自体が無駄なので、データアクセス系のコントロールを持つ処理系を使ってExcelブックから直接データを取り込みます。 とりえずは「Excelからデータ取り込み→DOSプログラムを起動」というアプリケーションをつくっておいて、最終的に全機能(DOSプログラムの機能)を取り込む形にすると思います。
- imogasi
- ベストアンサー率27% (4737/17069)
>(1)アプリケーションにデータ登録をするときに アプリケーションのソフト名、ソフトが組んである言語名はなんですか。 >(2)コマンド(c:\>xxxxx -***** "name" "age" ・・・・)を打って登録しています。 MS-DOS時代のソフトですか。 バッチファイルなど早晩止めるべきでしょう。 >(2’)企業秘密もあるでしょうが、どう言うデータを どれくらいの数、どれくらいの頻度で入力しているのか、やや具体的に、開示してもらえないですか。 >(3)エクセルに入力したものを (1)直接セルに入力する(2)フォームを作る(3) テキストエディタで入力し、エクセルへインポートする。 それらの組み合わせ、など色々あります。工夫のしどころです。一通りではないということです。 >(4)エクセルで管理していく予定です。 勉強は大変ですが、理想ではアクセスで管理するのが一番でしょう。 >(5)エクセルに入力したものをエクセルVBAを使ってセルからデータを取り出して 基本的には簡単です。X=cells(i,j)でi行j列のセルのデータ1つ拾えます。 >(6)1件づつ自動でアプリケーションに登録するコマンド ここが一番の難関です。アプリケーションがMS OFFICE群の1つなら、VBAで連携が取れる可能性があるが、それ以外 (本件多分それ以外らしい)だと、個別に勉強しないとならないし、出来るとも言えない、多分不可能です。VBAでもエクセル・アクセス以外は 単期間では勉強(資料集め+理解)が無理でしょう(私の挫折経験から)。 >(7)エクセルのデータをCSV形式にしてC言語で作ろうかとも エクセルVBAで1行で済んでしまいます。Cなど考えなくてよい。現在自分に出来るからといって、拘らないこと。 >(8)毎回手動でコマンドをたたいていたのを、プログラムで実現させたい。 プログラムでデータは作れません。(規則的な一部のデータを除いて)。勿論ご存知だろうから表現が不適当。 具体的に何を言っているか、説明していない-->(2’) >(9)データの入力はCSVを読むか、エクセルシート上でセルからひっぱってくるか。 オフラインバッチ処理なら(データを全て入力後、アプリにデータを一斉にいれて良い処理形態)アプリ側へCSVで渡せるようだから、それを使えば良い。 結論 (1)第1フェーズ CSVで受け渡しで凌ぐ。 (2)第2フェーズ 直接データ受け渡しとか、(現行DOS時代?)アプリが事務系のものならVBAで組みなおすとか考える。 (3)WSH(#1ご回答)も、エクセル、アプリの上に立てるソフトという意味で、全自動化に近づけると言う点で、良い面があるかもしれない。 (4)データ入力は、一番の検討課題で、SEの力のだしどころ、人によって違いが出るところ、結果が違いが出る ところだと思います。
- honiyon
- ベストアンサー率37% (331/872)
こんにちは、honiyonです。 Perlが適任・・・ですが、この場合VBAも選択肢に入りますね。 Cは文字列処理が多いので不適格です。C++ + MFCであれば若干文字列処理が簡単になりますが、専用アプリケーションであればこのケースの場合はDelphiやC++Builderの方が簡単です。(TStringGridクラスでCSV読み込みが簡単) 個人的には ActivePerl等を使って、Perlでささっとスクリプト組んであげるに一票です。VBAですと新規データを作成する度にマクロを埋め込むのが手間になりそうなので。 参考になれば幸いです(..
- a-kuma
- ベストアンサー率50% (1122/2211)
方向付けだけ。 Excel のデータを引っ張ってきたい、そして、コマンドラインから起動する、という条件を考えれば、 WSH が良いと思います。 C だと、Excel Book から直接値を引っ張ってくるのが少し面倒です。