• 締切済み

既存アプリを利用したプログラミング

他の方が作成されたアプリを使ってプログラムを作成したいのですが、どのようにしたらよいのでしょうか。 ご教示お願いいたします。 開発環境はOS:Windows Vista Business 開発言語:Microsoft Visual sutudio2005 C++ です。 手元にあるのはWindows インストーラ パッケージ(.msi)でインストールするとexeファイル・OCXファイル・XPRファイル・DLLファイル・だろ\\DATファイルがC\:program file\内に作成されます。 このアプリはある試験片のひずみデータをX線発生装置で計測し、出力されたテキストファイルデータをファイルを指定して読み込み計算して結果(強度や半値幅等)をExcel形式の表で表示するとものです。 私がやろうとしていることは現在毎度ファイルを指定してデータを読み込んでいるのをフォルダをしてファルダ内のファイルをすべて読み込ませるようし、Excel形式の表からデータを抜き出しどんな形式でもいいから結果データを保存できるような仕組みにしたいのです。 大変読みにくくて申し訳ないのですが、 全くどうしたらいいのかわからないのでご教示お願いいたします。

みんなの回答

回答No.2

 こんばんは。    Excelのセルからデータを取って来たいと言う事でしょうか。  もしそうであるならば、以下が参考になると思います。  http://www.ujasiri.com/prglib/vc/excel/vc_excel.html  http://www-online.kek.jp/~keibun/pukiwiki/index.php?C%2B%2B%A4%CB%A4%AA%A4%B1%A4%EBExcel%A4%CE%CD%F8%CD%D1  http://hp.vector.co.jp/authors/VA014436/prg_memo/database/ms/009.html  例えば、Office2003がインストールされている場合は以下の様に成ります(2つ目のURLにOfficeのバージョン別設定が書かれています)。以下参考程度に。 #include<windows.h> #include<objidl.h> #include<stdio.h> //Office2003 #import "C:\Program Files\Common Files\Microsoft Shared\Office11\MSO.DLL" no_namespace rename("DocumentProperties", "DocumentPropertiesXL") #import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\Vbe6ext.olb" no_namespace #import "C:\Program Files\Microsoft Office\Office11\EXCEL.EXE" rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") rename("DocumentProperties", "DocumentPropertiesXL") no_dual_interfaces static LPSTR UnicodeToAnsi(LPWSTR uni) { const DWORD size = ::WideCharToMultiByte(CP_ACP, 0, uni, -1, NULL, 0, NULL, NULL); LPSTR p = (LPSTR)::malloc(size); ::WideCharToMultiByte(CP_ACP, 0, uni, -1, p, size, NULL, NULL); return p; } static void DisplayXLS() { using namespace Excel; _ApplicationPtr pXL; //Excelの起動 pXL.CreateInstance(L"Excel.Application"); //Excelを非表示にする pXL->Visible = FALSE; //WorkBookを追加する WorkbooksPtr pBooks = pXL->Workbooks; //xlsファイルを開く _WorkbookPtr pBook = pBooks->Open("C:\\Book1.xls"); _WorksheetPtr pSheet = pXL->ActiveSheet; //取り出すセル位置 LPCSTR pszCellNames[] = { "A1", "A2", "B1", "B2" }; //表示する(保存したければ、此処でデータを拾って保存する) for(int i = 0; i < 4; ++i) { const _variant_t var = pSheet->Range[pszCellNames[i]][vtMissing]->Value2; switch(var.vt) { case VT_BSTR://セルが文字列 { LPSTR pAnsi = ::UnicodeToAnsi(var.bstrVal); ::printf("[セル番号 : %s][値 : %s]\n", pszCellNames[i], pAnsi); ::free(pAnsi); } break; default://数値(その他いろいろあるが、割愛) { const LONG lVal = var; ::printf("[セル番号 : %s][値 : %d]\n", pszCellNames[i], lVal); } } } //Excelの終了 pXL->Quit(); } int main() { ::CoInitialize(0); ::DisplayXLS(); ::CoUninitialize(); return 0; }

回答No.1

ちょっと前提条件を整理させてください。 ・実行プログラムはあるがソース(や附随する設計書)はない。 ・「Excel形式の表で表示」を画面のみに行い、Excelファイルは存在しない。 であっていますでしょうか? 上記前提とすると、 >現在毎度ファイルを指定してデータを読み込んでいるのをフォルダをしてファルダ内のファイルをすべて読み込ませるようし 単純にはキーボードマクロのような一定動作をさせるアプリを使用して一連の動作を連続して行うようなものを作る形になりますが、一般的なアプリの内容からすれば、そんな簡単には行かない気がします。 既存アプリが起動時のパラメータとしてファイルを指定できるような作りであれば、バッチ処理で逐次実行してみるという手もないわけではありません。 >Excel形式の表からデータを抜き出しどんな形式でもいいから結果データを保存 画面表示だけで、表示前の情報が中間データとしてファイル出力されていなければ難しいです。 画面の表示データをクリップボードにコピーしたとしても、それは「画像データ」でしかないため、そこから必要なデータを抽出する画像解析処理が必要となります。 また、仮に中間データがあったとしても、そのデータのフォーマットが不明な場合には、その内容の特定(解析)に時間を必要とします。 個人的には「既存アプリのソースがないのであれば、新しいプログラムを一から作りなおしたほうがよい」って内容に思えますが。

関連するQ&A

  • iPhoneのアプリ開発詳しい方

    iPhoneのアプリ開発を始めようと思っています。 .netの開発は出来ますがObject-Cに関しては今回初めてです。 資格取得にむけてのアプリ一問一答形式のアプリを作りたいのですが こういった学習アプリのサンプルソースなど公開されているところがあればご教示ください。

  • webサービスの結果を整形

    お世話になります。 現在soapでデータを取得して、結果をwebページで整形して表示するようなaspページを作成していますが、思うような結果が得られず、困っております。 お知恵をお貸し下さい。 webサービスの結果として、 レモン 500 みかん 400 が返ってきますが、テキストでしか返ってきません。 これを、表形式にして整形したいのですが、上手くいきません。 参考になるサイト等ありましたら、教えて下さい。 開発環境はVisualStudio 2008 c#での開発です。 宜しくお願いします。

  • iphone端末に作成アプリをインストール

    知り合いにiphoneアプリを作成して頂きました。zip形式のファイルを頂きまして、これからmacをレンタルし、iphoneアプリ開発環境をインストールし、最後にiphone実機にアプリをインストール する手順を行っていくのですが、頂いたzip形式のファイルをどのような手順でiphone実機に落とし込んで行けば良いのでしょうか? zipファイルは今USBフラッシュメモリに入っています。ご教授お願いします。

  • データベース型アプリの設計について

    いつも参考にさせていただいております。 VB等の言語を使用してWindowsアプリを作成するときに データベースを使用したくなることが多いと思いますが、 そういった場合にはどうしても「データベース」として オラクル等を使用しなければならないのでしょうか? ふと疑問に思ったのですが、例えばMS-Access でデータベースを作った場合に.mdbファイルが作成 されますが、これってAccessで開いて初めてデータ ベースとして機能しますよね? かなり高度な話になるのでしょうが、自分でアプリを 作成してそのアプリ独自のファイルを作成してデータ ベースを構築することは出来るのでしょうか? そんな作り方をしている方はいるのでしょうか? ソフト屋のホントに売るためのソフト開発でもないと そこまでしないぞ、ということなのかもしれませんが。 どなたかご意見ください。

  • C++開発アプリとDLLとで同じ領域のデータを共有するには

    お世話になっています。 ただいまC++でアプリ開発をしていますが、C++で作成したアプリと、DLLとで同じ領域のデータを共有して使いたいと思っています。 C++で外部で宣言した変数(構造体)のデータをDLLで参照して、内容を変更、C++アプリで変更した内容を参照して処理すると言う具合です。 DLLの方は既に作成済みで、引数としてC++アプリのデータを渡すことが出来ないので、どうにかしてC++で宣言した変数を参照したいのですが。 よろしくお願いします。

  • 指定ファイルの移動やコピー

    指定ファイルの移動やコピー ファルダ間で重複する(または重複しない)データを別ファルダへコピーできる方法や、フリーソフトをご存知でしたら教えてください。(環境はWin XP です) ▼やりたいこと  ・Aフォルダ:複数のデータが入っている  ・Bフォルダ:Aと重複&Aにはないデータが入っている  Bフォルダ内のAと重複するもの(もしくはAにはないもの)を別フォルダにコピーまたは移動させたいと考えています。 *ファルダ内のファイル名を一覧で取得できる方法は知っているので、作業としてファルダ間のチェックでも、ファイル名をリスト化したテキストとBファルダとのチェックでもかまいません。 *使用するファイルの形式は全て .psd です。 よろしくお願いいたします。

  • プログラミングについての質問

    プログラミングについて技術的な質問をしたいのですが、 どこか良いサイト、BBSフォーラムなどありましたら、 おすすめをご教示いただけないでしょうか。 言語はVisual C ++ (MFC)でウインドウズアプリを開発しております。 よろしくお願い致します。

  • VCでの外部アプリ操作

    VCを使用してソフト(exeファイル)を操作(値入力や結果の取得)することは可能なのでしょうか。可能であるならば方法を教えて頂けないでしょうか。 開発環境はOS:Windows Vista 言語:Microsoft Visual studio 2005 C++ exeファイルはDeliphで作成されたものであるデータファイルを読み込んで値を計算方法・設定値を入力し結果を出力するソフトです。

  • 既存で開いているファイルのファイル名を変更したいです

    C#でWEBサーバー開発をしているものです。 C#で既存に開いているファイルに対して 名前を付けて保存をするには どうしたら良いでしょうか? 簡潔に言ってしまうと WindowsのEXCELでファイルを開いて それをcsv形式で保存する。ということを C#でやりたいと思っています。 どなたかご教授ください。 宜しくお願いします。

  • 猫でもわかるプログラミング150章

    ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_150.htm のプログラムを作成しました。 内容:DDE接続でExcelからデータ読み込み 現象:DDE(D)→DDE開始(S)をすると"サーバーに接続失敗"となります。 指定されているR1C1形式にもしています。 原因がわかりません。 わかる方がいれば教えてください。 お願いします。