人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBScriptについて教えてください。

WEBページのテキストボックスに文字を入力したり、ラジオボタンやメニューを自動選択させるプログラムを組もうとしています。

ページのソースをみると、下記のように入力フォームの部分はJAVAScriptで作成されているようでした。

<script language="javascript" type="text/javascript" src="js/jquery-latest.js "></script>
<script>
var loading_img=new Image();
loading_img.src='images/remembermilk_orange.gif';
function check_final() {
$error=0;
$('input.integer').each(
function() {
if (!$error) {
if (!this.value.match(/^\d*$/)) {
alert("欄位輸入錯誤,價格欄位請輸入數字");
this.focus();
$error=1;

JAVAで作成された部分をVBでコントロールするにはどのような方法を用いればいいのでしょうか?

私なりにネットで調べて、getElementsByName等の方法を試してみましたがうまくいきませんでした。

宜しくお願いします。

●質問者: kgfjfdhgyf
●カテゴリ:ウェブ制作
✍キーワード:Focus GIF Java JavaScript SRC
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● KirakiraHikaru
●35ポイント

質問内容のJavaScript部分だけだと、Form部分の作成は行われていないようです。

(数字かどうかの入力チェックが行われているようです)


jquery-latest.jsを読み込んでいるようですが、これはライブラリですし、

他に読み込まれているJavaScriptファイルや、JavaScriptのコードはないでしょうか?

また、Html内にFormの記述はないのでしょうか?


JavaScriptによって出力されているフォームであっても、

名前や順序が特定できれば、getElementsByNameなどによってフォームの部品を特定して操作できます。


このあたりの詳細は下記のサイトがわかりやすいです。

三流君VBAでInternetExplorer.Applicationを操作する(IE操作)

http://www.ken3.org/cgi-bin/group/vba_ie.asp


getElementsByTagNameでタグ指定

http://www.ken3.org/vba/backno/vba164.html

ラジオボタンの操作

http://www.ken3.org/vba/backno/vba148.html

NAMEが同じフォームの項目へデータをセットする

http://www.ken3.org/vba/backno/vba176.html

Javascriptのイベントの起動方法

http://www.ken3.org/vba/backno/vba155.html

など

◎質問者からの返答

ご回答有難う御座います。

おっしゃった通り、HTML内にformの設定が有りました。申し訳有りません、確認不足ですね。

form設定部分のソースは下記になります。


画像1[圖片1]

<FORM id=fileform0 action=upload/upload.php?p=0 </p>

method=post target=target_upload

encType=multipart/form-data>

<IFRAME id=target_upload </p>

style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; WIDTH: 1px; BORDER-BOTTOM: 0px; HEIGHT: 1px"

name=target_upload src="about:blank"></IFRAME><INPUT </p>

type=hidden value=25027.1174655958

name=UPLOAD_IDENTIFIER><INPUT type=hidden value=512000 </p>

name=MAX_FILE_SIZE> <INPUT id=upload type=file size=8 </p>

name=upload>
<INPUT onclick=loading_image(0) type=button value=アップロード[上傳]>

<INPUT onclick=delete_image(0) type=button value=" 削除[刪除] " name=Submit32>

</FORM>


このソースはテキストボックス内にファイル名を入力して送信ボタンを押し、画像をアップロードする部分の抜粋です。


こちらの部分でファイル名を自動入力し、画像を自動アップロードするために下記のように組んでみたのですが、うまくいきませんでした。


'===========================

'= 出品フォーム画像の設定と送信

'===========================

Sub AddPictureFormSetProc()

With objIE.Document.forms(1)

'フォームの設定

.elements("要素名").value = "ファイル名"

'フォームの送信

.Submit

End With

End Sub


要素名の設定が悪いのかと思い、.elements(0)から.elements(5)まで手当たり次第に試しましたがやはりだめでした。

ただ、なぜか、.elements(3)の時には


<INPUT onclick=loading_image(0) type=button value=アップロード[上傳]>


の部分のアップロード[上傳]の文字が設定した”ファイル名”に置き換わりました。

反応があるのでフォームの指定は間違いなく、要素の指定に問題があるのでは、と考えているのですが・・・ここで行き詰りました。


2 ● KirakiraHikaru
●35ポイント

アップロード処理については、

汎用ボタン(type="button")でアップロード処理が行われているので、

このボタンをクリックする必要があると思います。

ですので、

<INPUT onclick=loading_image(0) type=button value=アップロード[上傳]>

をクリック処理すると実行できると思います。

※クリックするとJavaScriptのloading_image関数が実行される。


とりあえずの方法としては、

.elements(3)がアップロードボタンのようなので、

.elements(3).Click

とするとよいと思います。


一方、問題なのが、ファイル名の設定についてです。

下記を見ていただくとわかると思うのですが、

<input type=file>はReadOnly属性なので直接値を書きかえることができないようです。


<input type=file>への値代入

http://www.happy2-island.com/bbs/bbs.cgi?mode=past&no=180


下記を試してみるともしかしたら上手くいくかもしれません。

(今考えたコードなので実際に試したわけではありません。

セキュリティの問題で通用しないかもしれません

その場合はSendKeyによってキー入力をさせる方法くらいしかなさそうです)

.elements("upload").outerHTML = "<INPUT id=upload type=name size=8 name=upload value='c:\testfile.txt'>"

type=fileだと初期値および値が設定できないので、

type=fileの項目をtype=textの項目に無理やり変更してしている。

◎質問者からの返答

ご回答ありがとうございます。

type=textに変更した場合、ファイルのアップロードがうまく機能しなかったため、SendKeysにて対応することにしました。

しかしその場合、データベース上にある複数のファイル名を自動入力させることは可能でしょうか?

この返信内容は、今回の質問とは別の新たな質問になると思いますので、下記URLにて新しく質問を出しました。

http://q.hatena.ne.jp/1174964318

もし宜しければアドバイス願います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ