• 締切済み

VBや、Excelでこんなことできますでしょうか?

ネットワークでマージャンゲームをやっています。 そのマージャンゲームではつもった牌や捨てた牌のログが常に画面上に 出力されています。 このログから文字列、例えば”3万”とか”8ピン”といったものを 抽出し、ソフト上あるいはExcel上に表示させたいのです。 つまり、単にログから文字列を取得し、その値を得たいということです。 こういう動作をするソフトというかプログラムを作成したいのですが、 何からはじめたらよいのかわかりません。そこで以下の2点を教えて下さい。 1.VBやExcelで上記プログラムは作成できるか 2.できるとしたら一番重要な準備は何であるのか 私のスキルは7年位前にVBの本で数冊勉強した程度です。 以上、よろしくお願い致します。

みんなの回答

  • nac03056
  • ベストアンサー率48% (203/419)
回答No.4

面白い発想だと思います。 確かにVBやVBAを使って、そういった程度のことであれば可能だと思います。 ただ、この手の処理に関して言えることなんですけど、双方向のデータのやりとりが簡単にできるかどうかが問題になります。いわゆる、ログとして表示が出るとのことで、当然目で見ることは出来ますが、それをマウスやキーでドラッグしコピーすることが出来るかどうかで大きく可能性がかわります。ゲームによっては不正防止のために意図的に切り取れないように仕様ができているものもありますので、まずは手動でログを部分的に切り取れるかどうかを確認してみてください。これで出来ないと言うことであれば、ログを画像イメージとして切り取って文字認識する必要が出るため、殆ど不可能な(手間がかかりすぎる)話になります。で、もし取れたなら、あとはゲーム操作に支障の無いように取りこぼしのなくログをコピーできるか、写し取ったログから必要な文字だけを抜き取ることが出来るのかという具体的なプログラムに入れますので、いくらか目処も立つのではないでしょうか。 ちなみに今ログの見本を見ていてふと思ったのですが、チーについて、何と組み合わせてチーしたかという情報は出るのでしょうか?これが出ないと手動選択することになり、チーが連続したときなどログ読み取りとチー選択とでかなりやっかいな考え方が必要になる気がします。 なんにせよ、趣味のプログラムは面白そうなことでないとモチベーションが続きません。いい機会だと思いますのでぜひ完成させてください。

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.3

1.VBやExcelで上記プログラムは作成できるか →できる 2.できるとしたら一番重要な準備は何であるのか →まずはExcelのマクロを知ることだ。 突っ込みとして 上記の画像はちょっと足りない点があると思う 牌は4つずつあるよね?

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

私の場合エクセル・アクセスのVBA・VBなどを学んできました。 情報源は書籍・雑誌、WEB、質問コーナーなどです。それでも解説書などに載っていない問題にはお手上げです。 何が難しいかとなると、IEなどの通信・WEB関係のものをVBのコードで扱うとなると情報が極端に少なくなります。解説書も、本屋に行った時いつも探してますが見つかりません。ちなみにワードVBAについても体系的な本は1本も出てないようです。本の購入者がそこそこ期待できないと出版されない。 中にはマイクロソフトがスクリプトを作っていない分野もあります。 ですからエクセルなどと他ソフトを関連づけてコードで処理することは勉強上、非常な困難が伴います。初心者にはまず無理でしょう。 ーー ただそうは言っても ●MSのヘルプ(コード実例あり)を探し、読み解く(その力あり) ●海外の人のWEBも読める。世界は広い。例えば米国人では特殊な分野のことでも解説している人が居る。 ●全般的な課題でなく、限定的な一部分(本件もそれに当たる)だけの解決のために情報を集める(そうは言っても、限定的だから易しくなるかというとそうでもない場合が多いようだ) ●VB.Net(2002-2008)では色々な分野のソフトを扱えるように考えているようだ。 ●株式トレード関係の解説書(需要が相当有るから)にVBAでWEB情報を扱うコードが、部分的にしろ載っているかも。 ●エクセルでの「WEBクエリ」は有名になっているので、WEBにも記事は相当有る などが突破口かなと思う。 そばに詳しい人(プロ)がいる場合は、疑問点など聞いて進められるが、稀有なことだし、私はこういう質問を見ると、「XX蛇におじず」 と思ってしまう。 しかし、多分若くて潜在能力があり(多分理系の人)、他のプログラム経験や職場でのソフト作成経験などあり、良くやっていると思うような記事もたまに出くわす(例えばワードVBA)。 だから不可能とはいえないと思うが、一般には質問者の努力と能力と指導者次第だろう。 能力に乏しい小生の(人皆同じ的な考えで)言うことなので、割り引いて考え、発奮してくれればと思うが。

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

#VBは存じませんので、VBAで。。。 >つもった牌や捨てた牌のログが常に画面上に出力されています。  どのような形で出力されているのか存じませんが、下記のようなことで実現できないでしょうか? ・エクセルの [データ(D)] - [外部データの取り込み(D)] - [新しい Web クエリ(W)] でそのページを読み込み、VBAで解析する。 ・CreateObject("InternetExplorer.Application") の Navigate2 メソッドで、ログを読み込み、VBE の ウォッチウィンドウ で、オブジェクトの「Document プロパティ」配下を調べて、解析する。  いずれの場合も、ログが画像で出力されているような場合は、その画像のURLが、例えば http://okwave.jp/8man.jpg というな文字列になっていると存じますので、そこから「8man」を取り出して対応するセルに斜め罫線、あるいは オートシェイプ を引く様にすればよいかと存じます。

関連するQ&A

  • VB6.0でExcelを起動したいのですが

    VB6.0でExcelを起動はできて文字もでは制御できたのですが、色をかえたり線を引いたり・プリンターに出力したり・ディスクにかいたりしたいですが、なにかよいサンプルプログラムはないでしょうか。                                        よろしくお願いします。

  • VBスクリプトのコマンドについて

    テキストファイルを1行ずつ読み取り、必要な箇所のみを出力するプログラムを作成しています。 VBスクリプトで以下のことをする構文を教えてください。 1、ある1行から、ある文字列とスペースを除く方法    例(名前 abc → 名前を除きたい場合は「abc」を出力したい。) 2、ある1行から、ある文字列以降を抽出する方法   例(名前:abc →:以降をとりたい場合は「abc」を出力したい。) 3、2に加えて次の行も出力したい場合。   例(abc +次の行全部を出力)

  • エクセルのVBと、普通のVBの違い

    エクセルのVBと、普通のVBの違いを教えてください。 エクセルにVBが付いているということは、普通のVBより、高機能ということなの? エクセルのVBで、シューティングゲームのような複雑なプログラムを作ることはできますか?

  • VB2005からエクセルの操作

    お世話になっております。 VB2005にて勉強中の者です。 VB2005より、エクセルファイルを操作したいと考えております。 具体的な操作として、フルパスで指定したエクセルファイルのひとつのセルから抜き出した文字列を別のエクセルファイル内で検索し、一致したセルの右隣のセルの文字列を抽出し、テキストボックスに出力したいのです。 自分で調べたところ、下記サンプルに行き当たりましたが、VB2005では「LookAt:=xlWhole」が認識されないようです。 フルパスより文字列の抽出はできております。 Dim oExcel As Object 'Excel Dim fndRows As Long '探すセル範囲の最終行 Dim fndArea As Object '探すセル範囲 Dim findText As String '探す文字列(Text1に入力) Dim rg As Object '探し出したセル findText = Text1.Text 'シートを検索する rg = fndArea.Find(What:=findText, LookAt:=xlWhole) If Not rg Is Nothing Then Text2.Text = rg.Offset(0, 1).Value Else MsgBox("ありません") End If 「LookAt:=xlWhole」の箇所さえ通れば望む結果が出そうなのですが、 他にVB2005で対応したものはないでしょうか。 そして最初に取得したセルを一行目と仮定し、最後の行まで繰り返し処理をするならばDo~Loopなどを使えばいいでしょうか。 最後に、セルに情報を書き込む際に、セルへの色付けなどもVBから操作できますでしょうか。 複数の質問がまたがってしまいすみません。 どうぞご教示の程、宜しくお願い致します。

  • VBのエクセル操作について

    VB6.0で下記のようなロジックでエクセル操作をしていますが、 エクセル出力時に全て文字列扱いされるため計算処理でエラーとなって困っています。 数字は数値型で出力したいのですが、良い方法はありますでしょうか。 dim csvline() as string . . . csvline = Split("AAA,BBB,0,1,3,4", ",") . . . XlsSheet.Range(Cells(0, 1),Cells(0, 6) = csvline

  • VB2005でExcel2003とExcel2007

    初めまして、VB2005でExcelに出力するプログラムの開発を 行っているのですが、大変困っています。 どなたか教えて頂けないでしょうか。 VB2005の参照設定でMicrosoft Excel12.0 Object Library指定 してExcel2007をインストールしているパソコンでは Excelに出力できますがExcel2003を インストールしているパソコンではExcelに出力できません。 又、VB2005の参照設定でMicrosoft Excel11.0 Object Library指定 してExcel2003をインストールしているパソコンでは Excelに出力できますがExcel2007を インストールしているパソコンではExcelに出力できません。 Excel2003・Excel2007どちらがインストール されていてもExcelに出力できるプログラムを作成したいの ですが、何か方法はないでしょうか。 サンプル等があるHPがありましたら教えてください。

  • VB.NETのCreateObject()にあたるものをC#で

    お手数をお掛け致しますが、大至急ご教授頂きたいです。 現在C#(2005)で、抽出条件を指定し、帳票を印字するプログラムを帳票を出力するのではなく、Excelに出力するプログラムを作成しております。 そのプログラムは既に完成したのですが、ある問題が浮上し、作り直しをすることになりました。 Excel出力をする際、参照設定より「Microsoft Excel 11.0 Object Library」を追加して作成しておりました。 この設定ですと、Excel2003でしか正常動作はしません。 そこで、オブジェクトを使用してExcelを出力するように変更いたしました。 VB.NETにて、オブジェクトを使用してExcel出力を行ったサンプルプログラムがありましたので、そのソースを見ながらC#で作り直し始めたのですが、以下の点でいきなり躓いてしまいました。 VB.NET Dim objExcel As System.Object = Nothing objExcel = CreateObject("Excel.application") ・・・ ↓ これをC#でコーディングしたいのですが、躓いてしまっております。 上記の2行(特に2行目のCreateObject()です)をC#で再現する手段をお教え頂けませんでしょうか。 お忙しいと思いますが、大至急のご返答をお待ちしております。

  • VBで他のツール(エクセルなど)を表示する方法

    マシンをログオフした状態でエクセルを表示(VisibleをTrue)にすることは可能でしょうか? 現状、作成したプログラムではVisibleをTrueにして エクセルを立ち上げても、Falseになっています。 尚、VBで作成したEXEはタスクにより実行されます。

  • VB6 からEXCEL起動をブロックする方法

    VB6を使用してEXCELを開き色々コントロールするプログラムを作成したのですが、EXCELをプログラムからでなく、単独で起動してしまうとVB6から開いたEXCELのコントロールに悪影響を与えてしまうようです。 そこで、VB6で作成するプログラムの中にEXCELを単独で起動出来ないようにブロックするコードを入れられないかと考えています。 良い方法がありましたらご教授下さい。

  • EXCEL VBAから、VBのフォームを開くためには?

    EXCEL VBAからVBへプログラムを移そうと努力しています。 そこで、エクセルのシートのコマンドボタンを押すと、 VBで作成したフォームが開き、そこからEXCELの処理を させたいと考えています。 VBからエクセルの処理は Excel.Application のあたりをつかうことでなんとかなりそうなんですが その逆がわからず行き詰まっています。 EXCELは2000 VBは6.0 です ご存じの方、よろしくお願いします。

専門家に質問してみよう