三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

XXXさんへ 同じ名前の(name=)が複数存在するのでは?

質問内容

下記のような質問が来ました。

WEBサービスを利用して 語学勉強しています。
翻訳サービス結構便利に使っています。

VISTA OS EXCEL2007 から 次のマクロでリンクさせていますが、現在うまくゆきません。

URL = "http://www.excite.co.jp/world/spanish/"
objIE.Visible = True
'objIE.Visible = False
objIE.navigate URL

With objIE
While .Busy
Wend
End With

Application.Wait (Now + TimeValue("0:00:05"))

TEXT = Cells(NN, 1)

strTEXT = TEXT
If strTEXT = "" Then GoTo JUMP:
objIE.Document.all.wb_lp.SelectedIndex = 2 ''''' SPEN SELECTION
objIE.Document.all.Before.Value = strTEXT ''''' 原文 代入
objIE.Document.all("t-submit").Click ''''' 翻訳 ボタン クリック 
                                        ここまではまともに機能しています。

With objIE
While .Busy
Wend
End With

Application.Wait (Now + TimeValue("0:00:02"))

For KKK = 1 To 5
DoEvents
Application.Wait (Now + TimeValue("0:00:01"))
''''' If Left(objIE.Document.all.After.Value, 20) <> "こちらに翻訳後の文章が表示されます。 " Then Exit For ''''' 2006/01/26
Application.StatusBar = " HTML Receiving ....." & NN & "Waiting.... " & KKK
Next KKK

Application.Wait (Now + TimeValue("0:00:02"))
Application.Wait (Now + TimeValue("0:00:02"))
strTEXT = objIE.Document.all.after.Value          

                             ここで止まります。実行時エラー438
                             オブジェクトはこのプロパティ 
                             メソッドをサポートしていません。  

Cells(NEND + 2 + NN, 1) = strTEXT

objIE.Visible = False

JUMP:




このために 訳文章を取り出せません。

貴殿の動画サイトにおいても 日本語→韓国語 変換において時間待ち調整しておられたようですが、


従来は XP excel2003 からアクセスしていました。
結構長期間作業していたのですが、翻訳サイト側が変化したのかも知れません。
旧のソースを保存しているわけでもありません。

従来は 翻訳の完了を
"こちらに翻訳後の文章が表示されます。 " メッセージの消滅で判断していました。
今回 翻訳文章の取得ができないから このチェックができません。

デバック

デバックしてみた。

http://www.excite.co.jp/world/spanish/
を操作して、翻訳後のソースを見てみました。

なんか相手のミスかもしれないけど、
変換後のページに
afterが複数(2つ以上)あるみたいですね。

ほしいのは、
<div class="taTab">訳文</div>
<textarea name="after" id="after">

</textarea>
</div>
なのに、

<input type="hidden" id="my-after" name="after" value=""><input type="hidden" name="after" id="pr-after" value=""/>

があるので、
そのまま
strTEXT = objIE.Document.all.after.Value  
で、取得できないみたいです。

同じ名前が
複数ある時は

手前みそですが、
三流君VBA:VBAからIE操作 NAMEが同じフォームの項目へデータをセットする
http://www.ken3.org/vba/backno/vba176.html
このあたりを参考にして

strTEXT = objIE.Document.all.after.Value  

strTEXT = objIE.Document.all.after(0).Value 'document.all.q(0)をテスト

strTEXT = objIE.document.all("after")(0).Value 'document.all("q")(1)をテスト

セットしてみては?

何かの参考となれば、幸いです。
無事に動作することを願いつつ、失礼します。

三流プログラマー Ken3

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)