• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ウェブから貼ったドロップダウンリストのコンテンツ)

エクセル内でドロップダウンリストのコンテンツを認識する方法

このQ&Aのポイント
  • ウェブサイトのドロップダウンリストをエクセルにコピペすると、コンテンツはテキストボックスのままでセルに認識されません。
  • 解決策はありますか?週末に仕上げなければいけないレポートで困っています。
  • ドロップダウンリストはセルの中身に重なるように表示されています。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.7

#6です。 SELECTのリストを取得したいのだと思っておりましたが、SELECTで選択あるいはINPUTで入力した値を取得したいのでしょうか? 確かにINPUTに入力した文字でさえ、EXCELに貼り付ける事は出来ない様です。 一番簡単に実現する方法は、入力後のWebページをなんらかのpdf化アプリでpdfにして、Adobe Readerのファイル/その他の形式で保存/テキストで保存すると、選択/入力した値を含むテキストファイルが得られます。(Adobe Reader XIで試しています。pdf化の方は別環境の古いAcrobat6stdで試しておりますが、Google Chromeあたりなら標準でpdf出力機能を持っています。

jackie-swiss
質問者

お礼

mitarashi 様、 ご明察です。 SELECTで選択あるいはINPUTで入力した値を取得したかったのですが、説明がうまくなくてすみませんでした。 3日3晩ウロウロと迷い、悩み、あきらめそうになったのですが、ついにmitarashi様の上記の方法で試したら、、なんと!!!エクセルに実現することができました。 ほんとうに、ほんとうに、ありがとうございました。 費やした時間が無駄にならず、ものすごく嬉しいです。

すると、全ての回答が全文表示されます。

その他の回答 (7)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.8

#6です。得意の悪のりで、VBAで取得するのはどうやるんだろうと、手持ちのコードをいじってみました。目的のWebページが公開できるものでは無いとの事ですので、こんな事も可能かもしれないという程度にとどまりますが、ご参考まで。実行例を画像で添付します。(SELECT:1 は、0から数えて二番目、すなわち「サンプル2」を選択している事を表します) 'Microsoft Internet Control 'Microsoft HTML Object Library 'に参照設定 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Sub analyzeWebPage() Dim ie As InternetExplorer Dim doc As IHTMLDocument '-A Dim chNode As IHTMLDOMNode Set ie = getTopIeTab If ie Is Nothing Then Exit Sub Set doc = New HTMLDocument '-B Set doc = ie.document For Each chNode In doc.ChildNodes scanNode chNode Next chNode Set doc = Nothing End Sub Sub scanNode(myNode As IHTMLDOMNode) Dim myChildNode As IHTMLDOMNode If myNode.nodeName = "INPUT" Then Debug.Print "INPUT:" & myNode.Value If myNode.nodeName = "SELECT" Then Debug.Print "SELECT:"; myNode.selectedIndex If myNode.nodeName = "OPTION" Then Debug.Print "OPTION:"; myNode.Value If myNode.HasChildNodes Then For Each myChildNode In myNode.ChildNodes scanNode myChildNode Next myChildNode End If End Sub 'IEの最前面Tabを取得 Function getTopIeTab(Optional matchWord As Variant) As InternetExplorer Dim hWnd As Long Dim ie As InternetExplorer Dim targetIe As InternetExplorer Const IEClassName As String = "IEFrame" 'IEのClass名 hWnd = FindWindow(IEClassName, vbNullString) For Each ie In CreateObject("Shell.Application").Windows() If hWnd = ie.hWnd Then ie.StatusBar = True ie.statustext = CStr(hWnd) If ie.statustext = CStr(hWnd) Then If IsMissing(matchWord) Then Set getTopIeTab = ie ie.statustext = "" Exit Function Else If InStr(ie.LocationURL, matchWord) > 0 Then Set getTopIeTab = ie Exit Function End If End If End If End If Next ie Set getTopIeTab = Nothing End Function

jackie-swiss
質問者

お礼

重ねてのご回答をほんとうにありがとうございました。 今晩、おかげさまで安眠できます。

すると、全ての回答が全文表示されます。
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.6

メモ帳で下記の様なサンプルページを作って、select.htmlとか命名して保存して、IEで開きます。 <html> <head> </head> <body> <select name="example"> <option value="サンプル1">サンプル1</option> <option value="サンプル2">サンプル2</option> <option value="サンプル3">サンプル3</option> </select> </body> </html> このページをコピーして、デフォルトまたは、HTML形式を指定して貼り付けると、コンボボックスの様なコントロールが貼り付けられ、テキスト形式を指定して貼り付けると、一つのセルにリストが貼り付けられました。 (画像参照) 一発でお望みの形で取得するのは標準機能では難しいと思います。上記両様で取得したデータを合成する必要があるでしょう。 貼り付けられたコントロールは、TypeNameを調べるとHTMLSelectというコントロールの様でした (デザインモードにして、選択すると=EMBED("Forms.HTML:Select.1","")と表示されます) 下記の様なコードで、値(サンプル1;サンプル2;サンプル3というセミコロン区切りのリスト)に変換できるかも (コードを記述したブックのSheet1を対象にしています。テストは不十分ですので、バックアップを取ったファイルでお試し下さい。) Sub test() Dim sh As Worksheet Dim myOleObject As OLEObject Set sh = ThisWorkbook.Sheets("Sheet1") For Each myOleObject In sh.OLEObjects If TypeName(myOleObject.Object) = "HTMLSelect" Then myOleObject.TopLeftCell.Value = myOleObject.Object.Values 'Valuesという名前だが配列ではなくて文字列 myOleObject.Delete '値取得後コントロール削除 End If Next myOleObject End Sub なお、As HTMLSelectで変数宣言してアクセスしようとすると、xl2010が一発で飛びました Sub test0() Dim sh As Worksheet Dim myOleObject As OLEObject Dim mySelect As HTMLSelect Set sh = ThisWorkbook.Sheets("Sheet1") Set mySelect = sh.OLEObjects(1).Object Debug.Print mySelect.Values End Sub

jackie-swiss
質問者

お礼

シロウトの私にもわかるように、大変丁寧にご説明くださって、どうもありがとうございます。 ソースのデータ元は、ある質問票の結果の表です。 アドバイスにしたがって、汗かきながらやってみました。 メモ帳などに添付すると、リストにサンプル例がある場合は、その例がすべて羅列されるのですが、サンプル例がなく独自に質問に答える場合は、実際には何らかの数値などが入力されていたのですが、添付後の結果は、空欄でした。 まだ、解決できませんが、少し意味がわかってきました。 もう少し、がんばって、試行錯誤してみます。 本当に、どうもありがとうございました!

すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.5

> おっしゃるとおり、「画像」が見えてもそれはセルの上部にくっついているだけで、貼り付け先セルの中身はからっぽなのです。 画像を貼り付けたのでしたらそこに表示されている文字をセルに認識させることはできません。 どこのサイトのどの表をコピペしたのですか?

jackie-swiss
質問者

お礼

再び、回答してくださって本当にありがとうございます。 実は、ソースは顧客情報に関する内容が含まれ、サイトへのアクセス権が限定されているので、公開しにくいのです。せっかく有効なアドバイスをいただいたのに申し訳ありません。

すると、全ての回答が全文表示されます。
  • koko88okok
  • ベストアンサー率58% (3839/6543)
回答No.4

> ウェブサイトに表示されている表の中にドロップダウンリストがあり、それを含めてエクセルにコピペしたところ、それらコンテンツはテキストボックスのような形のままでエクセルのセルには認識されていません。 > このドロップダウンリストの数値は、どうやったらエクセル内のセルに認識させることができますか? > このドロップダウンリストは、それぞれのセルの中身にかぶさるように(オブジェクトのように)表示されています。 そのドロップダウンリストは、もしかしたら、リストの元の値ではなく、▼をクリックした結果表示されたリストの一覧ではないでしょうか? その場合は、改めて、「データ」タブ→「データツール」-「データの入力規則」から設定する必要があるのでは?

jackie-swiss
質問者

お礼

ありがとうございます。おっしゃるとおり、リストの一覧でした。 ソースのデータ元は、ある質問票の結果の表です。 メモ帳などに添付すると、リストにサンプル例がある場合は、その例がすべて羅列されるのですが、サンプル例がなく独自に質問に答える場合は、実際には何らかの数値などが入力されていたのですが、添付後の結果は、空欄でした。 まだ、解決できませんが、少し意味がわかってきました。 どうもありがとうございました!

すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

訂正 ページなのかわかりませんか ↓ ページなのかわかりませんが

すると、全ての回答が全文表示されます。
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

どこのサイトのページなのかわかりませんか、ページに表示されてる表ですよね。ページに表示されているドロップダウンリストの「画像」をコピーして貼り付けただけということじゃないですか。

jackie-swiss
質問者

お礼

ご回答いただいてありがとうございました!! おっしゃるとおり、「画像」が見えてもそれはセルの上部にくっついているだけで、貼り付け先セルの中身はからっぽなのです。 貼り付けの方法を、いろんなオプションや形式で試してみましたが、ダメでした。

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! おそらく一つのセル内に表示されているのではないでしょうか? 試しに、Wordかメモ帳に貼り付けてみてください。 そこで改行表示されていれば、表示されているものをもう一度Excelにコピー&ペーストすれば 各セルに分割されて表示されると思います。 他の原因ならごめんなさいね。m(_ _)m

jackie-swiss
質問者

お礼

tom04さん、早速の回答をどうもありがとうございました。 Wordに貼り付けてからエクセルにコピー&ペーストしてみたら、やはりエクセルのそれぞれのセル内の左上のボックス内にコンテンツが示され、本来のセルは空欄です。コンテンツをセルに取り込んで、計算などに使いたいのですが、できません。 メモ帳に貼り付けてみたら、ドロップダウンリストで選択されたものだけでなく、選択肢すべてが羅列されてしまいました。 成功できませんでしたが、すぐに回答して下さって、どうもありがとうございました。 束の間でしたが、希望が灯り、元気がでました!

すると、全ての回答が全文表示されます。

関連するQ&A