エクセルVBAでHTML操作についての質問

このQ&Aのポイント
  • エクセルVBAを使用してASP+JavaScriptで作成された社内の管理システムにデータを自動転記したいです。
  • 現在、ログインからリンククリックまでのプログラムは作成済みですが、データ入力画面のテキストボックスの指定方法が分かりません。
  • テキストボックスのネーム属性はすべて同じであるため、どの行に入力すれば良いかが分かりません。
回答を見る
  • ベストアンサー

エクセルvbaでHTML操作

エクセルvbaでHTML操作 vba,HTML初級者です。asp,javaScriptはほとんどわかりません。 社内の管理システム(ウェブアプリケーション)にエクセルの数値を転記すると いう作業がめんどくさいので、エクセルVBAで自動化できないかと考えています。 会社の管理システムはASP+JavaScriptで作成されていて、よくわからないので 手動で入力する手順をそのままvbaで組もうかと思っています。 ログイン → リンクリスト表示 → リンククリック → データを入力 → 登録 という流れなのですが、リンクをクリックしてデータ入力画面まではいけたのですが その後のプログラムがわかりません。 <データ入力画面の構成> ---------------------------- |  CODE  |  案件名  |  内容  | ---------------------------- |  CODE  |  案件名  |  内容  | ---------------------------- |  CODE  |  案件名  |  内容  | ---------------------------- |  CODE  |  案件名  |  内容  | ---------------------------- |  CODE  |  案件名  |  内容  | ----------------------------  [登録ボタン] CODE、案件名、内容、の部分はテーブルになっています。 このような構成の画面にCODE、案件名、内容を入力して登録ボタンをクリックしたいのですが、 テキストボックスのネーム属性がどの行も同じで(txtCode,txtName,txtJobの3種類) どうやって指定して入力すればいいのかわかりません。 画面のhtmlをここに載せられるといいのですが、情報漏えいなどに触れそうなので ちょっと載せられません。 非常に少ない情報なので、申し訳ないのですが解決のヒントをいただけたらと思います。 よろしくお願いします。

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

  • ベストアンサー
  • luka3
  • ベストアンサー率74% (299/401)
回答No.1

elementsで追っていけばいいです。 こんなかんじになりますでしょうか。(実際に動くか試していません) For i=0 to …document.forms(0).elements.length-1  If …document.forms(0).elements(i).name = "txtCode" Then   …document.forms(0).elements(i).value = Cells(rowCode, colCode).value   rowCode = rowCode + 1  End If Next 登録ボタンを押すには forms(0).submit() でできます。 (もしくは [ボタンのname].click()でもよいです)

mfhanaane
質問者

補足

早速の回答ありがとうございます。 ・・・の部分はInternetExplorerオブジェクトでよかったですか? 早速試してみたところ、とりあえず要素の名前を拾うことが出来ましたので、 入力も問題なく出来るかと思います。 できればHTMLTableオブジェクトの行単位での入力がしたかったのですが、 わかりやすいコードですし、これでもいいですね。 それでちょっと質問なのですが、今まで私はコードを組む際、ローカルウィンドウでオブジェクトの 持っているフィールド(?)で追っていたのですが、(ie-document-all-itemと言う感じで・・) このelementsと言うのはなんなんですか?ローカルウィンドウには出てこないのですが・・・。 vbaの補完にも出てこないですし、どのようなオブジェクトなのですか?

その他の回答 (1)

  • luka3
  • ベストアンサー率74% (299/401)
回答No.2

≫このelementsと言うのはなんなんですか? elementsはFORMに含まれるINPUTやSELECTなどの要素が入ります。 「form elements」などで検索すると色々出てきます。 わからなくなったらとりあえず検索してみるとよいですよ。

mfhanaane
質問者

お礼

早速検索してみました。使用方法はなんとなくわかりました。 でも、まだelementsというもの自体が理解できる情報は得られてませんので、 もう少し検索してみたいと思います。 javaのapiの様な物があるとわかりやすいんですけどねぇ^^; 追加の質問にもお答えいただき、どうもありがとうございました。

関連するQ&A

  • Excelの値をHTMLに表示できませんか?

    HTMLの画面からリンクを押すと裏でExcelが立ち上がり、必要な情報だけをjavascriptの変数かクッキーかセッションとかで持たせておき、Excelを閉じた後その変数内の情報をHTMLに表示させるなんてことはできない出ようか? (イメージ) HTML 利用者のIDは「2」 ┌──────────────────┐ │リンク          │ │             │ │             │ │             │ └──────────────────┘ Excel A列(ID) B列(データ)  1    A  2    B  3    C HTML ┌──────────────────┐ │リンク          │ │             │ │2さん B         │ │             │ └──────────────────┘ というようにしたいです。 今考えているのは、クッキーでPCにログインしている方のIDが保持されているので、クッキーからIDをjavascriptで取得してき、リンクが押されたときにjavascriptでExcelを開き、データを探して変数に入れ、Excelを閉じ、変数内の情報を画面に書き出そうと思っているのですが、何分javascript初心者なもので、詳しいことは分からず、まずはそもそもそのようなことができるのか?ということを教えていただきたいです。 可能なのであればその方法を実現する方法やソースをご教授いただけないでしょうか? よろしくお願いいたします。

  • エクセルで作成したHTMLにリロード機能を・・・

     エクセルで作成した(保存形式をHTMLにして出来たファイル)に閲覧先での自動ページ更新機能を つける事は可能でしょうか? 会社のパソコンなので外部ソフトを使用した更新もできず、インターネットにも接続はできません。 具体的には社内LANの中だけで運用しているファイルです。 ホストPCでデータ入力用のエクセルで各種データを更新して保存したエクセルファイルは エクセルVBAにより他の表示形式用エクセルファイルにデータ入力が実行され、HTML形式で保存された後、ホストPCから同じファイルがLAN内の各PCの所定の場所へとコピー配布されます。(ファイル名は常に固定例:ABC.xls) LAN内の各PCのうち、ここで作成されたHTMLを常に表示しておかなければならず、現在はファイルが 更新されるたびにIEの更新ボタンを押して上書きされたファイルを読み込み直しています。 この作業をHTML化する段階でエクセルに盛り込めないか試行錯誤しています。 どうかアドバイスをお願いします。 簡単なシステム?概要は以下の流れになっています。 編集用VBA付きエクセルファイル(ファイル名:A)でフォームにデータを入力           ↓ 画面表示用エクセルファイル(ファイル名:B)にファイルAで入力されたデータが入力されて、 HTML形式で保存される。(保存されたファイル名:C)           ↓ ファイルCがLAN内PCに配信されて、所定のアドレスへコピーされる(常に上書き)           ↓ 社員が各PCの社内HPの一部のリンクからファイルCを閲覧して内容を確認する。 ※その内1台はファイルCを閲覧している画面のまま開きっぱなしになっている。(他のHPリンクも   使用することがあるので、ファイルCのみが自動リロードされてほしい。) うまく説明できていないかもしれませんが、どうぞよろしくお願いします。

  • VBAでjavascriptを操作

    カテゴリが違っていたら申し訳ありません。 VBAでIEを制御する際、色々調べているとjavascriptを使うシーンが たびたび出てくるのですが、あれはIEで読み込んだページ内にあるものを使っているのですか? それともIEの中に基本的な関数やメソッドが入っていて それも含め呼び出して使っているのでしょうか。 HTMLのソースを見てjavascriptのソースが分かるものについては、 それをVBAを使って動かすことはできるのは理解しています。 ページ内に存在しない基本的なjavascriptのコードは vbaだけで呼び出せたりするのですか? たとえば下記のページのOKボタンをクリックする場合、 http://kamicha1.web.fc2.com/Excel/Test20090726.html 下記のコードをVBEに記載しました。 このclick()はjavascriptの関数(メソッド?)なのでしょうか。 HTMLをclick()で検索しても該当はありませんでした。 ie.document.Script.setTimeout "javascript:document.getElementById('popOK').click()", 200 分かりにくい文章で申し訳ないのですが、 上記のコードはIDの部分を変えてればどんなページにも使えるものなのでしょうか。 恐れ入りますが、ご教示お願いします。

  • VBAでのIE操作・HTML操作について

    VBAを独学で学んでいる者です。IEを操作させたく、学んでいます。 色々と検索などをしていましたが行き詰ってしまいました。 どうぞご助力願います。 学び始めて1週間程度ですので、うまく説明できないかもしれませんがご容赦ください。 VBAでIEを操作し、特定のURLを表示。←これは大丈夫です 表示されたウェブサイトのHTML内の特定の文字列(リンク)と、 アクティブなセル内のテキストが合致したリンクをクリックする、 ・・・といったマクロは書けるものでしょうか? <INPUT TYPE="submit" NAME="btn01" VALUE="ログイン"> 上記のようなHTMLソースですと「NAME="btn01"」を探せば、「objIE.document.all.btn01.Click」というものでできるかと思いますが、 動的に変化するウェブサイトの文字列と、あらかじめ用意していたセル内の文字列が合致した時にだけクリックするような方法を求めています。 例えば ・夏にしか出現しないウェブサイトコンテンツ「水着」。 ・エクセルのシートC2に「水着」。 ・IE起動。サイト内に「水着」という文字列があり、セルと合致するので「水着(リンク)」の箇所をクリック。 ・・・といった感じなのですが・・・。やはり難しいでしょうか・・・。 「水着」といった単語ではなく、もっと複雑な文字列を扱う予定です。 稚拙な表現ですみません。 皆様、どうぞ宜しくお願いいたします。

  • vbaでHTMLファイルを取得、保存したい

    エクセルvbaを使い、HTMLファイルを保存することはできるものでしょうか。 エクセル書類の中にいくつかのリンクがあり、このリンク先の中味を別のホルダーに保存したいのですがこのようなことをvbaを使い実施することはできるものなのでしょうか。 もしできるとしたらその方法等教えていただければありがたいのですが。 よろしくお願いします。

  • エクセルVBAで困ってます。

    私は今、エクセルVBAで困ってます。 内容はデータを入力したエクセルのシート上で、別のファイル(CSV形式)を開いてある特定の行に入力したデータを参照し、完全に一致した際には、別のファイルの内容をシートに反映させるといったようなことは可能でしょうか? 襲えて下さい。 回答お待ちしています。

  • エクセルVBAでのIE画面操作

    エクセルのデータを社内のイントラネットに自動入力し顧客情報画面を自動的に立ち上げるVBAコードがあります。 現在これで動いてはくれるのですが、ひとつ不便なところがあるので改善したいのです。 以下のコードは、エクセルのA列に入力された顧客番号を、エクセル上のカーソル移動により、番号入力画面(http://xxxx.yyy.co.jp/imagef/Qspec.asp) の入力欄(kokyakuNo)に自動転記します。 自動で検索をかけ、結果を別の画面(http://xxxx.yyy.co.jp/imagef/QresultVi.asp )に表示してくれます。 最初の1回は、まず番号入力画面があらわれ、次に結果が表示された別の画面(http://xxxx.yyy.co.jp/imagef/QresultVi.asp )が現れてくれます。 ところが、エクセル上でカーソルを一つ下げ、次の顧客番号を選択すると、また番号入力画面になり、検索がはじまるのですが、結果の画面が番号入力画面の後ろに隠れて表に出てきてくれません。 いちいちウィンドウズ画面の一番下のタスクバーで結果の画面をクリックしなくては表示されないのです。 これを最初の一回目は結果の画面が新しく開くので自動的に表に出るのでしょうが、2回目以降はすでに存在する画面上の表示が変わるだけなので隠れたままなのだと思います。 なんとか自動的に結果の画面を表に表示させる方法はないでしょうか?エクセル2000、Windows2000です。 ご教示ください。 Dim objIE As Object Private Sub Worksheet_SelectionChange(ByVal Target As Range)   Dim tmp As String   If Target.Count > 1 Then Exit Sub '複数セル選択を除外   If Target.Column <> 1 Then Exit Sub 'A列以外を除外   If Target.Value = "" Then Exit Sub '空白セルを除外   On Error Resume Next   tmp = objIE.Name 'objIE.Nameの取得に成功したら起動とみなす。   If Err.Number <> 0 Then 'エラーならIEが起動していないので、起動する。     Set objIE = CreateObject("InternetExplorer.Application")   End If   On Error GoTo 0   With objIE     .navigate "http://xxxx.yyy.co.jp/imagef/Qspec.asp"     .Visible = True     Do While .busy = True '表示まで待機       DoEvents     Loop     .document.getElementById("kokyakuNo").Value = Target.Text 'テストボックスへ入力:ID属性で指定     .navigate "javascript:Submit();" 'http://xxxx.yyy.co.jp/imagef/QresultVi.asp に結果が表示される     Do While .busy = True       DoEvents     Loop   End With End Sub

  • エクセル(VBA)を使ってテキストを自動html変換するには

    テキストを入力してボタンを押すとhtmlに変換できるようにしたいのですがどうすればよいのでしょうか? ソフトはエクセルを使用しなければならず、VBAで作成できるということはわかったのですが… ただhtmlに変換するだけではなく一部分のテキストの色を変更したりしなければなりません。 よろしくお願いいたします。

  • エクセルVBAでマウスの操作はできますか?

    エクセルVBAで、マウスのポインタを画面の中央にもってきたり、左クリックを押すという操作をさせたいのですが、無理ですか? sendkeyなんでしょうか…。画面の中央にマウスのポインタを持ってくるというのも、使用しているモニタによって座標が違うような気もしますが…。不勉強ですいません。 VBAの本を見ても、VBAのヘルプを見てもわかりませんでした。もともと無理な話なのでしょうか? 教えて下さい。よろしくお願い致します。

  • excel vba についてお聞きします

    excel vba についてお聞きします userformを使ってworksheetにデータを登録するといった事をしたいと考えております userformにはtextboxとcommandbuttonを配置 commandbuttonを押したらtextboxに入力した内容をworksheetに登録させる 同時にworksheetのA列には日付を登録 日付は登録をするその日付を反映させる 同じ日付があった場合は日付の登録はせずにその日付の行、B→C→Dと順に textboxのデータの登録だけをする。 日付の入るA列以外にデータが入る事になります また、textboxの内容が既にworksheetに登録済の場合 『既に登録済みです』といったメッセージを出すようにもしたいのです ご教授の程、よろしくお願いします。

専門家に質問してみよう