• ベストアンサー

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

あるアプリケーションにデータ登録をするときに、現在はコマンドプロントから コマンド(c:\>xxxxx -***** "name" "age" ・・・・)を打って登録しています。 最近急に、データ量が増えて手動で登録するのが困難になってきました。 現在このデータはエクセルで保存してあります。これからも、エクセルで 管理していく予定です。 そこで、エクセルに入力したものをエクセルVBAを使ってセルからデータを 取り出して、1件づつ自動でアプリケーションに登録するコマンドを発行したい と考えています。 それか、エクセルのデータをCSV形式にしてC言語で作ろうかとも思っています。 実現したいことは ・データはエクセルで管理している。 ・毎回手動でコマンドをたたいていたのを、プログラムで実現させたい。 (DOSにコマンドを発行する) ・データの入力はCSVを読むか、エクセルシート上でセルからひっぱって くるか。 VBA、Cともに初心者です。どの言語でどういう風な形で プログラムを作ればよいかわからず困っています。 実現するよい方法をおしえてください。よろしくおねがいします。

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

  • ベストアンサー
  • tksoft
  • ベストアンサー率36% (99/273)
回答No.2

エクセルあるデータというのは「"name" "age" ・・・・」の部分なんでしょうか、そうでしたら「c:\>xxxxx -***** 」の部分を先頭にくっつけて、バッチファイルにしてみたらどうでしょう。 例えばA1にname,B1にageがあればC1に ="c:\>xxxxx -***** " & A1 & " " & A2 ・・・・・・ という具合にし、C列をコピーし、テキストファイルに貼り付け拡張子batで保存すれば完了です。 もちろん「C列をコピーし、テキストファイルに貼り付け・・・」の部分を自動化するともっと楽になります。 あとは、コマンドが正常に出来ていることを確認してから、ダブルクリックで実行です。

その他の回答 (5)

  • redraft
  • ベストアンサー率16% (9/55)
回答No.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

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.5

私なら… VBかC++(VC++/MFCかC++Builder/VCL)かDelphi。 ExcelのデータをCSV化すること自体が無駄なので、データアクセス系のコントロールを持つ処理系を使ってExcelブックから直接データを取り込みます。 とりえずは「Excelからデータ取り込み→DOSプログラムを起動」というアプリケーションをつくっておいて、最終的に全機能(DOSプログラムの機能)を取り込む形にすると思います。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.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の力のだしどころ、人によって違いが出るところ、結果が違いが出る ところだと思います。

  • honiyon
  • ベストアンサー率37% (331/872)
回答No.3

こんにちは、honiyonです。  Perlが適任・・・ですが、この場合VBAも選択肢に入りますね。  Cは文字列処理が多いので不適格です。C++ + MFCであれば若干文字列処理が簡単になりますが、専用アプリケーションであればこのケースの場合はDelphiやC++Builderの方が簡単です。(TStringGridクラスでCSV読み込みが簡単)  個人的には ActivePerl等を使って、Perlでささっとスクリプト組んであげるに一票です。VBAですと新規データを作成する度にマクロを埋め込むのが手間になりそうなので。  参考になれば幸いです(..

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

方向付けだけ。 Excel のデータを引っ張ってきたい、そして、コマンドラインから起動する、という条件を考えれば、 WSH が良いと思います。 C だと、Excel Book から直接値を引っ張ってくるのが少し面倒です。

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

関連するQ&A

  • 別のアプリケーションとエクセルマクロについて

    エクセルとは別のアプリケーションのデータの文字をコピーして エクセルのシートのある決まった位置に張り付ける、ということを 簡単に行いたいのですが、(マクロ的にボタン一つとか) どういった方法がありますか? エクセルのVBAマクロは作っていますが、 別のアプリからデータをコピーして持ってくるというのは、できないですよね。 (csvとかに落とすこともできないデータです。) 別のアプリの文字をコピーする段階で、VBAでは無理だと思うので、 他のプログラム言語だと、そういうことができますか? C言語は少し習いましたが、何か最適な方法や、 このプログラム言語だと、簡単にできるというのがあれば、教えてください。 よろしくお願いいたします。

  • エクセルでVBAを使ってセキュリティカードのデータ管理をしたい

    いつもお世話になります。VBA初心者です。 会社でセキュリティカードの導入を検討しているのですが、カード内に2種類のコードがあり、それぞれ別のプログラムで読みこんだものを手作業で紐付けなければならないので登録が難しく、VBAである程度登録を簡素化できないかと考えて投稿いたしました。手作業で行う場合の流れは以下のとおりです。 (1)プログラムを立ち上げ、登録する個人の個人コードを手打ち入力した後にセキュリティカードをリーダーにかざす。 (2)その後「保存」ボタンをクリックすると、所定の位置にCSVファイルが保存される。 (3)別プログラムを立ち上げ、リーダーにカードをかざすと、もう一種のコードデータがクリップボードにコピーされる。 (4)エクセルの管理表(A列に個人コード、B列に個人名;重複なし)を開き、CSVファイルも開く。 (5)CSVファイルのデータを個人コードをキーにして、VLOOK等でC列の該当するセルに紐付ける。 (6)紐付けられた該当セルの横のセル(D列)にクリップボードに保存されているコードデータを貼り付ける。 という流れなのですが、クリップボードからデータを貼り付ける作業が手作業なので、間違える可能性が高いです。 そこで、VBAを使って以下のような作業にしたいのです。 (1)CSVファイルとクリップボードにコードデータを保存する。 (2)管理表のエクセルデータを立ち上げ、プログラムを起動する。 (3)プログラムで自動的にCSVファイルのデータを読み込み、該当するセル(C列)にコードデータを割り当てる。 (4)該当したセルの横(D列)にクリップボードにコピーされているデータを貼り付ける。 という流れにしたいのですが、やり方をご存知の方、ご教授ください。

  • VBAでC言語

    本日登録しました。よろしくお願いします。 質問ですが、エクセルVBAでいろいろ始めたのですが この中でC言語は利用できるのでしょうか。 計算をする事に使用したいのです。 勤怠管理で50人ほどの給与計算などを作ったのですが、 皆勤賞・精勤賞なども自動でやるので、関数も多様しています。 このためか、どうも動作がぎこち無いです。 C言語とかは計算が早いという事を聞いたので、 使うことが出来ないかと考えました。

  • エクセルのVBA記述のことについて

    エクセルでVBAを記述するのにはいちいちコマンド等を打つ必要があるのでしょうか。既にコマンド、関数等が入っているもの(ライブラリというのですか?)はあるのでしょうか。あとC言語等についてもプログラムの記述にはコマンド等を簡単に呼び出せる方法があると聞きましたが、どの様に入手するのでしょうか。それらはライブラリと呼ぶのですか。

  • Excel VBAを用いて学習ソフトを作る

    こんばんは。 Excel VBAを勉強しています。 参考書を一通り目を通して次に何をしようと考えた結果、 VBAや他の言語を勉強するための簡単なソフトを作ることを思いつきました。 自分の案としては参考書や問題集に載っているコマンドやプロパティなどの 解説をあらかじめ疑似的なデータベースに登録しておき、 VBAのマクロを使って入力したワードを検索・表示するというものです。 そこで土台をまずしっかり作りたいのでDBの形式を固めたいのですが、 どのような形式で管理、登録するとよいでしょうか? 例えば現段階では、 別のExcelシート自体をDBとして、 セルごとに、管理番号・所属・名称・説明文・登録日時 の形で管理しようかと思っています。 またはテキストファイルにCSV形式でそのままDB代わりに使う、などです。 データ自体は手入力でコツコツ入れていくつもりなのでレコード数は そこまで増えないと思います。(多くて500行程度?) 別の媒体をDBとして使う案や、追加しておいた方がいい属性などありましたら お金がかからない範囲で教えてもらえるとうれしいです。よろしくお願いします。 ちなみにAccessはPCには入っていません。

  • VBAと似たプログラム言語を教えてください。

    仕事場ではエクセルVBAを使い簡単なプログラムを作ってエクセルをいじっているのですが、自宅にはofficeがありません。 自宅でも似たようなプログラム言語を使って簡単な個人用アプリケーションを作りたいのですが、何か良い言語はないでしょうか? 言語、フォーム作成、共にわかりやすいのがあればいいのですが。

  • VBA 行の高さの限界

    急いでます。 会社でVBAを使ってます。 csvファイルからエクセルの表に転記するプログラムを作ってます。 あるセルの行の高さが限界になり、データが半分以上隠れてしまいます。 VBAで幅は変えずに全て表示する方法はないでしょうか? 印刷時に表示出来ればどんな方法でもいいです。

  • VBA シート1だけを保存する

    VBA シート1だけを保存する こんにちは、VBA初めてまもない初心者です よろしくお願いします 動作環境として、OS:XP excel:excel2007 を使用しています VBA で CSV データを取込む際にCSV データのとある項目以降から 2行目にして更にセルを結合しようと思っていたのですが どうやら、VBAだとワンアクションじゃ出来ないことに気がつきました。 例:    ※1行の例です。実際にはこのCSVデータが1000行近く有ります (CSV data) "AAA","BBB","CCC","DDD","EEE","FFF"         ↓ (VBAのみではワンアクションでは出来ませんでした) (excel)       A   B   C   D              1行目 AAA BBB CCC DDD 2行目   EEE     FFF    //EEEは[2A,2B]のセル、 FFFは[2C,2D]のセル ですので、やり方を切り替えて 1・1度CSVデータをエクセルシート1に取込む 2・シート2でセルの枠の結合やサイズ等を変更しながら、シート1の内容を参照する (注意:コピーではなく参照です) 3・シート2の部分だけを保存する、もしくはシート1の内容を削除する 1-3のような手順で、処理を行う事が出来るのでしょうか? アドバイス頂けたらと思います。<(_ _)>

  • C言語初心者過ぎてわからないです

    エクセルのCSVデータなんですが 1行目のデータを 1行目から5行目まで同じデータ 6行目のデータを 6行目から10行目まで同じデータ 10行目のデータを 10行目から15行目まで同じデータ 以上のような作業を繰り返し元のCSVのデータをすべて5行(つまりデータの量は5倍)にしたいのですが C言語でこのような作業を行うファイルをつくるにはC言語ではどのようなプログラムになるでしょうか

  • Excel VBA 特定のWindowを前面に

    VBAのShellコマンドでコンソールアプリケーションを起動し,その処理が終了してから(終了を待つのはWD.Tasks.Existsを使いました)そのアプリケーションで作成したcsvファイルを開いて処理するプログラムを作りました。 そのアプリケーションは,動いている間,Excelの背面にあるようで画面に表示されません。このアプリケーションが動いている間,それを最前面に表示させたいのですが,方法がありましたらお教えください。

専門家に質問してみよう