こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBA?C?なにを使えばよいでしょうか

あるアプリケーションにデータ登録をするときに、現在はコマンドプロントから
コマンド(c:\>xxxxx -***** "name" "age" ・・・・)を打って登録しています。
最近急に、データ量が増えて手動で登録するのが困難になってきました。
現在このデータはエクセルで保存してあります。これからも、エクセルで
管理していく予定です。
そこで、エクセルに入力したものをエクセルVBAを使ってセルからデータを
取り出して、1件づつ自動でアプリケーションに登録するコマンドを発行したい
と考えています。
それか、エクセルのデータをCSV形式にしてC言語で作ろうかとも思っています。

実現したいことは
・データはエクセルで管理している。
・毎回手動でコマンドをたたいていたのを、プログラムで実現させたい。
(DOSにコマンドを発行する)
・データの入力はCSVを読むか、エクセルシート上でセルからひっぱって
くるか。

VBA、Cともに初心者です。どの言語でどういう風な形で
プログラムを作ればよいかわからず困っています。
実現するよい方法をおしえてください。よろしくおねがいします。

投稿日時 - 2003-02-04 23:11:56

QNo.464092

すぐに回答ほしいです

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

エクセルあるデータというのは「"name" "age" ・・・・」の部分なんでしょうか、そうでしたら「c:\>xxxxx -***** 」の部分を先頭にくっつけて、バッチファイルにしてみたらどうでしょう。

例えばA1にname,B1にageがあればC1に
="c:\>xxxxx -***** " & A1 & " " & A2 ・・・・・・
という具合にし、C列をコピーし、テキストファイルに貼り付け拡張子batで保存すれば完了です。

もちろん「C列をコピーし、テキストファイルに貼り付け・・・」の部分を自動化するともっと楽になります。

あとは、コマンドが正常に出来ていることを確認してから、ダブルクリックで実行です。

投稿日時 - 2003-02-04 23:24:58

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.6

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

投稿日時 - 2003-02-06 15:43:27

ANo.5

私なら…

VBかC++(VC++/MFCかC++Builder/VCL)かDelphi。

ExcelのデータをCSV化すること自体が無駄なので、データアクセス系のコントロールを持つ処理系を使ってExcelブックから直接データを取り込みます。

とりえずは「Excelからデータ取り込み→DOSプログラムを起動」というアプリケーションをつくっておいて、最終的に全機能(DOSプログラムの機能)を取り込む形にすると思います。

投稿日時 - 2003-02-05 12:13:20

ANo.4

>(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の力のだしどころ、人によって違いが出るところ、結果が違いが出る
ところだと思います。

投稿日時 - 2003-02-05 09:14:49

ANo.3

こんにちは、honiyonです。

 Perlが適任・・・ですが、この場合VBAも選択肢に入りますね。
 Cは文字列処理が多いので不適格です。C++ + MFCであれば若干文字列処理が簡単になりますが、専用アプリケーションであればこのケースの場合はDelphiやC++Builderの方が簡単です。(TStringGridクラスでCSV読み込みが簡単)

 個人的には ActivePerl等を使って、Perlでささっとスクリプト組んであげるに一票です。VBAですと新規データを作成する度にマクロを埋め込むのが手間になりそうなので。

 参考になれば幸いです(..

投稿日時 - 2003-02-04 23:47:35

ANo.1

方向付けだけ。

Excel のデータを引っ張ってきたい、そして、コマンドラインから起動する、という条件を考えれば、
WSH が良いと思います。

C だと、Excel Book から直接値を引っ張ってくるのが少し面倒です。

参考URL:http://member.nifty.ne.jp/aya/wsh/index.htm

投稿日時 - 2003-02-04 23:21:56

あなたにオススメの質問