みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ウェブから貼ったドロップダウンリストのコンテンツ

ウェブサイトに表示されている表の中にドロップダウンリストがあり、それを含めてエクセルにコピペしたところ、それらコンテンツはテキストボックスのような形のままでエクセルのセルには認識されていません。
このドロップダウンリストの数値は、どうやったらエクセル内のセルに認識させることができますか?
このドロップダウンリストは、それぞれのセルの中身にかぶさるように(オブジェクトのように)表示されています。

コピペ元のウェブサイトはJava(?)を使っているようです。

私のエクセルは2010です。

週末の間に仕上げなければいけないレポートがあり、シロウトの頭で色々考えたり、試したりしましたが、さっぱり解決しません。
どうぞ、助けてください。

投稿日時 - 2014-05-03 22:19:34

QNo.8580146

すぐに回答ほしいです

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

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

投稿日時 - 2014-05-05 20:00:21

お礼

mitarashi 様、

ご明察です。
SELECTで選択あるいはINPUTで入力した値を取得したかったのですが、説明がうまくなくてすみませんでした。

3日3晩ウロウロと迷い、悩み、あきらめそうになったのですが、ついにmitarashi様の上記の方法で試したら、、なんと!!!エクセルに実現することができました。
ほんとうに、ほんとうに、ありがとうございました。

費やした時間が無駄にならず、ものすごく嬉しいです。

投稿日時 - 2014-05-06 01:50:12

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(8)

ANo.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

投稿日時 - 2014-05-05 20:44:04

お礼

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

投稿日時 - 2014-05-06 01:53:03

ANo.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

投稿日時 - 2014-05-04 16:55:40

お礼

シロウトの私にもわかるように、大変丁寧にご説明くださって、どうもありがとうございます。

ソースのデータ元は、ある質問票の結果の表です。

アドバイスにしたがって、汗かきながらやってみました。

メモ帳などに添付すると、リストにサンプル例がある場合は、その例がすべて羅列されるのですが、サンプル例がなく独自に質問に答える場合は、実際には何らかの数値などが入力されていたのですが、添付後の結果は、空欄でした。

まだ、解決できませんが、少し意味がわかってきました。
もう少し、がんばって、試行錯誤してみます。
本当に、どうもありがとうございました!

投稿日時 - 2014-05-05 12:16:42

ANo.5

> おっしゃるとおり、「画像」が見えてもそれはセルの上部にくっついているだけで、貼り付け先セルの中身はからっぽなのです。

画像を貼り付けたのでしたらそこに表示されている文字をセルに認識させることはできません。

どこのサイトのどの表をコピペしたのですか?

投稿日時 - 2014-05-04 10:00:39

お礼

再び、回答してくださって本当にありがとうございます。

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

投稿日時 - 2014-05-05 00:19:25

ANo.4

> ウェブサイトに表示されている表の中にドロップダウンリストがあり、それを含めてエクセルにコピペしたところ、それらコンテンツはテキストボックスのような形のままでエクセルのセルには認識されていません。
> このドロップダウンリストの数値は、どうやったらエクセル内のセルに認識させることができますか?
> このドロップダウンリストは、それぞれのセルの中身にかぶさるように(オブジェクトのように)表示されています。

そのドロップダウンリストは、もしかしたら、リストの元の値ではなく、▼をクリックした結果表示されたリストの一覧ではないでしょうか?

その場合は、改めて、「データ」タブ→「データツール」-「データの入力規則」から設定する必要があるのでは?

投稿日時 - 2014-05-04 09:22:23

お礼

ありがとうございます。おっしゃるとおり、リストの一覧でした。

ソースのデータ元は、ある質問票の結果の表です。

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

投稿日時 - 2014-05-05 00:10:00

ANo.3

訂正

ページなのかわかりませんか

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

投稿日時 - 2014-05-03 23:42:41

ANo.2

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

投稿日時 - 2014-05-03 23:41:03

お礼

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

投稿日時 - 2014-05-04 00:44:08

ANo.1

こんばんは!
おそらく一つのセル内に表示されているのではないでしょうか?

試しに、Wordかメモ帳に貼り付けてみてください。
そこで改行表示されていれば、表示されているものをもう一度Excelにコピー&ペーストすれば
各セルに分割されて表示されると思います。

他の原因ならごめんなさいね。m(_ _)m

投稿日時 - 2014-05-03 22:37:25

お礼

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

投稿日時 - 2014-05-04 00:07:51

あなたにオススメの質問