【最大10000ポイント】当たる!!質問投稿キャンペーン!

下記ソースの指定の箇所からjavascriptのfunction fun1(1)をよびたいのですがどう記述したらいいでしょうか。
(ちなみにbody onload=は使わない条件です)

<%@ LANGUAGE = VBSCRIPT %>
<html>
<head>
<script type="text/javascript">
<!--
//禁止、許可
function fun1(is){
var is;
var i;
var jj;
jj=document.form1.text2.length;
for (i=0;i<jj;i++){
if (is==1) document.form1.text2[i].disabled=true;
if (is==2) document.form1.text2[i].disabled=false;
}
}
//-->
</script>
</head>
<html>
<body>
<form name="form1">
<input type="text" name="text2" size="14" maxlength="8" value="ABC">
<input type="text" name="text2" size="14" maxlength="8" value="DEF">
<%
<-------------------ここでfun1(1)をよびたい fun(1)と書いてもエラー
>%
</form>
</body>
</html>

A 回答 (2件)

<SCRIPT LANGUAGE="VBScript">


<!--
fun1(1)
-->
</SCRIPT>
で通ったけど・・・。

call fun1(1) では型が一致しません。だった。
エラー番号は控えなかったけど。
    • good
    • 0
この回答へのお礼

ありがとうございました。
下記のようにしてたのでエラーでした。
<%
fun1(1)
>%

お礼日時:2009/03/12 17:58

呼び出し側をfun(1)でなくfun1(1)に。

この回答への補足

fun(1)は書き間違いで、fun1(1)でもエラーです。

Microsoft VBScript 実行時エラー (0x800A000D)
型が一致しません。:

補足日時:2009/03/12 16:37
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBScript から JavaScript を呼び出すには

VBScript 内から JavaScript を引数付きで呼び出したいのですが、
「Sub プロシージャを呼び出すときに、かっこを使うことはできません。」
と出てエラーになります。「javascript:」を使ってみましたがうまくいきません。
どうすればいいのでしょうか。よろしくお願いします。

Aベストアンサー

VB系の文法では、
サブルーチンを呼び出す時には
Call prog(x)
のように呼び出します。
単純に
prog(x) のように呼び出そうとすると「カッコを使うことはできません」と叱られます。
Call を使わない場合は、
prog x のようにカッコを使わないで書きます。
また、
値を返す関数の場合は、
y=prog(x)
のように書きます。
ただし、javascript と VBScript でやり取りできるオブジェクトは限定されます。

QJavaScriptからVBScriptの呼び出しについて

JavaScriptからVBScriptで作った関数を呼び出すことは可能なのでしょうか?
可能なのであれば、やりかたを教えてください。

Aベストアンサー

できますよ。
別のスクリプトタグの中で定義した関数は、普通に呼び出せますので。

<script language=vbscript>
function hoge(arg)
hoge=arg*5
end function
</script>
<script language=javascript>
document.write(hoge(6));
</script>

とか。
逆もしかりです。

QVBS実行時エラー オブジェクトがありません 回避方法について

タイトルの件ですが、現在CSVよりIDとPWを読み込み、Webページに自動ログインできるVBSを作成しております。
ネットの情報を頼りに下記ソースを作成し、自動ログインできるところまでは達成しました。
しかしながら、一回目の実行時はいいのですが、二回目以降時間を置かずにVBSを起動すると
エラーが発生します。(IEは起動し、ログイン自体は出来ます)
本エラーの回避方法をご教授願えませんでしょうか。

エラーの発生場所は objIE.Document.getElementsByName("username")(0).Value = SiteID
あたりだとは思うのですが、何が原因かがわからなく。。

○エラーメッセージ
エラー:オブジェクトがありません。:'objIE.Document.getElementByName(...)(...)'
コード:800A01A8
ソース:Microsoft VBScript 実行時エラー

○コード
'Option Explicit

Dim tmp 'CSV格納
Dim tmp2 'CSV分割
Dim SiteArray(10) 'ID,PW,URL格納
Dim SiteURL 'URL格納
Dim SiteID 'ID格納
Dim SitePW 'PW格納

Dim i
dim objFSO
dim stmCsvFile

'URL,ID,PWをCSVより読込
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set stmCsvFile = objFSO.OpenTextFile("C:\Users\***\Desktop\login.csv")

Do Until stmCsvFile.AtEndOfLine = True
tmp = stmCsvFile.readline
tmp2 = Split(tmp, ",")
SiteArray(i) = tmp2(1)
i = i + 1
Loop

stmcsvfile.Close


'URL,ID,PWを格納
SiteID = SiteArray(1)
SitePW = SiteArray(2)
SiteURL = SiteArray(0)

'---------- ひらく

Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Navigate SiteURL
Do Until objIE.busy = False And objIE.readyState = 4 : Loop '待ち合わせ

'---------- ID/PASSの入力

objIE.Document.getElementsByName("username")(0).Value = SiteID
objIE.Document.getElementsByName("password")(0).Value = SitePW

'---------- SUBMIT

objIE.Document.getElementsByName("login_form")(0).Submit
Do Until objIE.busy = False And objIE.readyState = 4 : Loop '待ち合わせ

'----------

宜しくお願い致します。

タイトルの件ですが、現在CSVよりIDとPWを読み込み、Webページに自動ログインできるVBSを作成しております。
ネットの情報を頼りに下記ソースを作成し、自動ログインできるところまでは達成しました。
しかしながら、一回目の実行時はいいのですが、二回目以降時間を置かずにVBSを起動すると
エラーが発生します。(IEは起動し、ログイン自体は出来ます)
本エラーの回避方法をご教授願えませんでしょうか。

エラーの発生場所は objIE.Document.getElementsByName("username")(0).Value = SiteID
あたりだ...続きを読む

Aベストアンサー

こんにちは。

>コメント頂いた箇所を下記の通り処理を変更しましたが現象はほぼ変わりませんでした。

#1で私の書いた、IsObjectは一般論ですが、個別の問題になるとかなり話は込み入ってしまうから、やめておいたことですが、なんといっても、VBSで、どのように開発しているかは分かりませんが、そのオブジェクトのプロパティとか、確認をして開発したのでしょうか。

>Set upw =objIE.Document.getElementsByName("password")
の時点で、upw を確認できない状態ですと、
upw(0) という「添字(index)」があるかどうかさえ確認できませんよね。
その辺りはどうなんでしょうか?それで、Length プロパティを調べるように書いたわけです。

ふつう、例えば、ここの「教えて!goo」なんかでも、IDとパスワードは、きちんと、[ID(uname, pass)]を持っています。そしてIDには、添字は存在しません。

VBAがあれば、VBEditorのローカルウィンドウで、そのプロパティを確認していただくしかないと思います。もしかしたら、最初からとれていないのかもしれません。

こんにちは。

>コメント頂いた箇所を下記の通り処理を変更しましたが現象はほぼ変わりませんでした。

#1で私の書いた、IsObjectは一般論ですが、個別の問題になるとかなり話は込み入ってしまうから、やめておいたことですが、なんといっても、VBSで、どのように開発しているかは分かりませんが、そのオブジェクトのプロパティとか、確認をして開発したのでしょうか。

>Set upw =objIE.Document.getElementsByName("password")
の時点で、upw を確認できない状態ですと、
upw(0) という「添字(index)」があるか...続きを読む

QVBS(WSH)で開いたIEのウィンドウがアクティブにならない

VBSでタイトルバーのみのIEウィンドウを開き、
SendKeyでtestと入力するスクリプトを作成しています。

ですが、開いたIEのウィンドウがアクティブにならず、
SendKeyがIEに送信されません。

VBSについては全くの初心者でして、ウィンドウがアクティブにならないのが
環境の問題なのか、プログラムの問題なのか判断できません。
どなたかご教授をお願いします。

IEのバージョンは8、OSはWinXPです。

以下、ソースです。

--------------------------------------------------

'タイトルバーのみのIEを起動する
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate("http://www.google.co.jp/")
objIE.MenuBar = False
objIE.StatusBar = False
objIE.ToolBar = False
objIE.AddressBar = False
objIE.Visible = True

'表示待ちループ
Do While objIE.Busy
WScript.Sleep 100
Loop

'[test]で検索
WshShell.SendKeys("test")
WScript.Sleep(100)
WshShell.SendKeys("{TAB}")
WScript.Sleep(100)
WshShell.SendKeys("{ENTER}")

--------------------------------------------------

VBSでタイトルバーのみのIEウィンドウを開き、
SendKeyでtestと入力するスクリプトを作成しています。

ですが、開いたIEのウィンドウがアクティブにならず、
SendKeyがIEに送信されません。

VBSについては全くの初心者でして、ウィンドウがアクティブにならないのが
環境の問題なのか、プログラムの問題なのか判断できません。
どなたかご教授をお願いします。

IEのバージョンは8、OSはWinXPです。

以下、ソースです。

--------------------------------------------------

'タイトルバーの...続きを読む

Aベストアンサー

プログラムでは無く、環境によるものです。

ただ、WSHを使ってアクティブウィンドウにキーを送る仕組みですが、WSHからIEを起動したら確実にアクティブになる補償は無いので、スクリプト内で明示的にアクティブにした方が安全です。

@ITで指定したプロセスIDをアクティブにしてキーを送る記事があったので、参考になると思います。

http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh14/cformwsh14_01.html

ただし、
Set objIE = WScript.CreateObject("InternetExplorer.Application")

で起動した場合、objIEだけでプロセスIDが得られないので、別の検討が必要になります。
メニュー等非表示の指定を除けば、iexplorer.exeをExecコマンドで立ち上げることは可能でしょう。

プロセスIDまで取得してきっちり組みたい場合は、WSHにてWMIという仕組みを使えばプロセス情報は得られます。

http://www.upken.jp/kb/wmi_sample.html

検索ワードとしては、「WMI」「VBScript」「プロセス」「取得」あたりでいろいろ出ると思いますよ。

IE起動前にプロセス一覧を記録し、起動後に増えたIEのプロセスをうまく引ければ実現できそうですね。

プログラムでは無く、環境によるものです。

ただ、WSHを使ってアクティブウィンドウにキーを送る仕組みですが、WSHからIEを起動したら確実にアクティブになる補償は無いので、スクリプト内で明示的にアクティブにした方が安全です。

@ITで指定したプロセスIDをアクティブにしてキーを送る記事があったので、参考になると思います。

http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh14/cformwsh14_01.html

ただし、
Set objIE = WScript.CreateObject("InternetExplorer.Application")

で起動し...続きを読む

Q外部ファイルに関数を置いて、呼び出すには?(VBScriptなんですが)

HTMLに、VisualBasicScriptを記述したのですが、
関数の一部を、別のファイルから呼び出すには、
どうすればいいんでしょうか?

外部ファイルは txtファイルでいいんでしょうか?
そのへんからすでに分からない初心者なんですが・・・。

関数の例はどんなものでもかまいませんので、
ヒントだけでも教えてくださればありがたいです。

Aベストアンサー

No.1のmousengokeです。本当に簡単なサンプルを作ってみました。
***これより先test.vbs***
Sub testbutton_OnClick
Msgbox "ボタンを押してください。",5+64+256+4096,"VBScriptテスト"
End Sub
*****これより上test.vbs****
****これより下htmlファイル****
<html>
<head>
<script type="text/vbscript" src="test.vbs"></script>
</head>
<body>
<form>
<input type="button" value="クリック" name="testbutton">
</form>
</body>
</html>
****これより上htmlファイル****

QVBA オブジェクトが空かどうか判定する

皆様のお知恵を拝借させてください。

エクセルVBAでオブジェクトを入れる変数を定義し、その変数にオブジェクト
が入っているかどうか検査したいのですがどうしたらいいでしょうか。

例えば---
Dim a As Workbook
If a <> nothing then ←この部分が分からない。このままだとエラー。
処理
End if
---------
環境
エクセル2003
WinXPsp1

Aベストアンサー

もし、aが空だったら
If a Is Nothing Then 

もし、aが空じゃなかったら
If Not a Is Nothing Then

QWebページ中の javascript をVBAから実行するには

VBAで objIE を使用して Webページ中の javascript を実行したいのですが、
onclick="~~" の記述がないケースがあり困っております。
例えば以下のような記述です。

<a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>

onclick の記述がない上記のようなケースでは、javascript の呼び出しはどのようにすればよいのでしょうか?
不可能でしょうか?

Aベストアンサー

ここを読んでみればよいのですが、だらだらと文章が長いですね。^^;
http://www.ken3.org/vba/backno/vba170.html
この内容のまとめは、この後でします。もし、ダメだったら、こちらも読んでください。

>onclick="~~" の記述がないケースがあり困っております。

最初に、ストレートな回答ではありませんが、私の場合、いくつかの方法を試しています。

>a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>
この場合は、id がありますから、確実のオブジェクトとして取得できますから、まず最初に、ダメ元で、
id名.Click を一度試してみます。もしくは、この行の上部のコードのオブジェクトのClass名のオブジェクトのひとつから、ヒットさせようとします。

そこでダメなら、ということで、ken3の内容に入るのですが、この著者の結論(正解)は、

ご質問に沿って書くと
For i =0 To objIE.Document.links.Length -1
If objIE.Document.links(i).href ="javascript:;" Then '文字の比較は、大文字・小文字がある
   objIE.Document.Links(i).Click
End if
Next i

ということになっています。私は、このコードは少し古臭く感じます。

ここで、ken3 の所では、Testサイトを用意してくれているので、試してみましたが、ダイレクトでサイトがとれている限りは、やはり、

Testサイト:http://www.ken3.org/vba/test170f.html

 objIE.Navigate "javascript:xxxxx;"

が利くことが分かりました。ただし、実際は、ここで時間待ちをしなくてはならないでしょう。
解説は、フレームからですので、うまく行かなかったようです。

ここを読んでみればよいのですが、だらだらと文章が長いですね。^^;
http://www.ken3.org/vba/backno/vba170.html
この内容のまとめは、この後でします。もし、ダメだったら、こちらも読んでください。

>onclick="~~" の記述がないケースがあり困っております。

最初に、ストレートな回答ではありませんが、私の場合、いくつかの方法を試しています。

>a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>
この場合は、id がありますから、確実のオブジェクトとして取得できますか...続きを読む

Q型が一致しません

クラスのメソッド(VBで作成したActiveXDLL)を実行する時、
型が一致しませんというエラーがでます。
クラスのパラメータをリテラルで埋め込むと正常に実行され、
変数を用いるとエラーとなります。
何かお気づきの方、教えてくれたら幸いです

<< asp側 >>
Set SxeObj = Server.CreateObject("sxejancheck.Jancheck")
下の書き方だとOK
ReturnResult = SxeObj.CheckJan ("000001", "1111111111111")
下の書き方だと駄目
pSellerCD = "000001"
pGtinCode = "1111111111111"
ReturnResult = SxeObj.CheckJan (pSellerCD , pGtinCode)

VB(DLL側)
Public Function CheckJan(pSellerCD As String, pGtinCode As String) As Boolean


環境はIE5.5+IIS5.0+WIN2000です。

クラスのメソッド(VBで作成したActiveXDLL)を実行する時、
型が一致しませんというエラーがでます。
クラスのパラメータをリテラルで埋め込むと正常に実行され、
変数を用いるとエラーとなります。
何かお気づきの方、教えてくれたら幸いです

<< asp側 >>
Set SxeObj = Server.CreateObject("sxejancheck.Jancheck")
下の書き方だとOK
ReturnResult = SxeObj.CheckJan ("000001", "1111111111111")
下の書き方だと駄目
pSellerCD = "000001"
pGtinCode = "1111111111111"
ReturnResult = SxeObj....続きを読む

Aベストアンサー

ASPはVariant型の変数しか使えません。お使いのActiveXの引数の型が

CheckJan( As String, As String )

だったら、エラーになると思います(String→VariantはOKだけど、Variant→StringはNG)。

CheckJan( As Variant, As Variant )

とし、内部で、Cstrして、DLLを呼び出してみては。

QDirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)

いろいろ調べましたが不明な点があり、質問します。

WindowsのDOSプロンプトでdirコマンドを打つとフォルダ・ファイルの一覧が表示されますが、その中にファイルサイズが表示されています。
このサイズを合計できるコマンドはありませんか?
DIRコマンドのオプションを調べましたがそれらしいものが見当たりません。
具体的には
C:\xxx\配下に50個程度のファイルがあります。
その50個の合計サイズを知りたいです。
xxxフォルダの親フォルダにはアクセス不可です。

ずーっと悩んでいます。よろしくお願いします。

なお、OSはWindowsNTか2000で使用予定です。

Aベストアンサー

カレントドライブ、カレントフォルダを
C:\xxx\
にした状態で、

dir /s /a-d

/sパラメータででサブディレクトリすべてを検索
/a-dパラメータでディレクトリ以外のファイル(つまり属性に関係なくすべてのファイル

これを実行すると最後にファイルの個数とファイルサイズの合計を表示します。

もし、隠し属性のファイルは合計しないのであれば、

dir /s

だけで良いと思われます。

QVBScriptから指定URLを開く方法

 ある特定のWebページをVBScriptから開きたいのですが方法が探せませんでした。VBScriptからWebページを開く方法、もしくはhttp putを行う方法を教えてください。よろしくお願いします。

Aベストアンサー

こんなので、どうでしょうか?

Set objIE = Wscript.CreateObject("InternetExplorer.Application")
objIE.Navigate2 "http://www.goo.ne.jp/"
objIE.Visible = TRUE
Set objIE =Nothing


人気Q&Aランキング