![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
お世話になります
親ウインドのHTAアプリケーション内にボタンを設置し、そのボタンを押すと”新たにHTAファイルを作成し”別ウインドとして生成したHTAアプリケーション画面を表示するようにしたいのです。(表示後は生成したHTAアプリケーションは削除する)
これ自体は、実現できたのですが、いくつか疑問点がありましたので、教えていただきたいです。
長くなるので、先に質問だけ記載します。1つでも良いので教えていただけると嬉しいです。
コード①の質問、終了していない文字列型の定数と表示されるのはなぜか?
コード②の質問、scriptの文字列が入らないように分割して変数に入れるとエラーが出ないのはなぜか?
コード③の質問、タグを記載したsample2.htaを生成し、runメソッドで起動したが、runメソッドの後にdeletefileメソッドを行なうと、inputタグを記載したにもかかわらず、テキストボックスが表示されないのはなぜか?
コード④の質問、sample2.htaを削除する手順を別プロシージャに分けたが、Callメソッドではテキストボックスが生成されず、SetTimeOutメソッドでは生成されるのは何故か?
(※④のコードで1秒後にdelfileプロシージャが呼び出されるわけではないのはわかっていますので、SetTimeOutメソッドの誤用は指摘しないで頂きたいです。)
以下、ボタンを押しonclickイベントで呼び出されるプロシージャのみ記載します。
①最初に書いたコード、「終了していない文字列型の定数」エラーが出るのは何故?
sub sample
set fso = CreateObject("Scripting.FileSystemObject")
set sh = CreateObject("Wscript.Shell")
set Mhta = fso.opentextfile("C:\sample2.hta",2,true)
Mhta.Writeline "<body><script type=""text/vbscript""></script><input type=""text""></body>"
Mhta.close
sh.run "mshta.exe C:\sample2.hta"
End sub
②Writelineの内容を試行錯誤した結果、scriptと記載が入っているとNGなようなので、scriptという文字列が入らないように変数に分割して結合。エラーが出ないので上の理論は合ってる?
sub sample
set fso = CreateObject("Scripting.FileSystemObject")
set sh = CreateObject("Wscript.Shell")
set Mhta = fso.opentextfile("C:\sample2.hta",2,true)
a = "<body><scrip"
b = "t type=""text/vbscrip"
c = "t""></scrip"
d = "t><input type=""text""></body>"
Mhta.Writeline a&b&c&d
Mhta.close
sh.run "mshta.exe C:\sample2.hta"
end sub
③ボタンクリックにてsample2.htaを表示後、生成したsample2.htaファイルを削除したいので、 end subの1行前に以下のコードを追記、何故かsample2.htaにテキストボックスが表示されない
fso.deletefile "C:\sample2.hta"
④起動前にファイルが削除されてしまっているのかと思い、削除を別プロシージャに分けたところ、callメソッドではテキストボックスが生成されないが、SetTimeOutでは生成されるのはなぜか
fso.deletefile "C:\sample2.hta" の代わりに、delfileプロシージャを呼び出す2例
(ⅰ) Callメソッドを用いた場合(sample2.htaウインドにはテキストボックスは表示されない)
Call delfile
end sub
sub delfile
set fso = CreateObject("Scripting.FileSystemObject")
fso.deletefile "C:\sample2.hta"
set fso = nothing
end sub
(ⅱ)setTimeOutを用いた場合(sample2.htaウインドにはテキストボックスが表示される)
setTimeOut "delfile",1000
end sub
sub delfile
set fso = CreateObject("Scripting.FileSystemObject")
fso.deletefile "C:\sample2.hta"
set fso = nothing
end sub
以上です、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
①②について、
</script>という文字があるとダメみたいですね。たぶんsample1.htaの冒頭の<script ~>に対応する閉じタグと誤認識されるではないかと。
スクリプトを書くエリアの部分を以下にしたらOKでした。
-------------------
<html>
<head>
<script language="vbscript"> ' ここは元のままでも良いかも
<!-- ' htmlのコメント開始の記号を追加する
ここにvbscriptを書く
--> ' htmlのコメント終了の記号を追加する
</script>
</head>
<body>
以下略
-----------------------------
③④について
sh.runの第三引数をtrueにすると起動したプログラム(mshta.exe)が終了するまで、スクリプトの実行が停止するので、その直後でファイル削除してもイケます。
詳細はMSDNを参照してくだい(https://msdn.microsoft.com/ja-jp/library/cc36442 …)
-----------------------------
sh.run "mshta.exe C:\sample2.hta", 1, true
fso.deletefile "C:\sample2.hta"
-----------------------------
ご回答有り難うございます。
HTAは寛容性が高い分、<!-- -->のように明示的に記載しないといけないのですね。
これで見栄えの悪いコードを書かずに済みそうです、ありがとうございました。
③④については、やはり実行速度の差というところでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) FileSearch2007に変わる構文について 1 2022/12/16 16:57
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) リストボックスに表示されたファイルを削除したい 1 2023/04/19 12:02
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
HTAのウィンドウを閉じるには・・。
ホームページ作成・プログラミング
-
VBからhtaファイルを開くには?
Visual Basic(VBA)
-
外部ファイルに関数を置いて、呼び出すには?(VBScriptなんですが)
Visual Basic(VBA)
-
-
4
VBSで応答不要のメッセージボックスを表示したい
その他(パソコン・スマホ・電化製品)
-
5
HTAで,親ウインドウを閉じると同時に子ウインドウも閉じる
JavaScript
-
6
VBS フォルダ内にあるすべてのファイルを検索→ファイルが特定のファイルなら開く
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【HTML、VBScript】HTAアプリケ...
-
分割コンパイルの方法がわかり...
-
関数の引数
-
複数条件のオートフィルタ(VBA)
-
Vba テキストボックスの文字列...
-
VBAで入力数値について
-
テキストボックスに大文字を
-
vba 日本語以外を抽出について
-
TextBox内の特定文字の数を数え...
-
エクセルVBAでテキストボッ...
-
テキストボックスかラベル上の...
-
VBAでcallで呼び出したsubを終...
-
PHP GDでテキストを含む最小の...
-
C言語のサフィックスについて
-
VB2005テキストボックスへのコ...
-
ReadParseで同名のinput名は配...
-
VB2010 TextBoxの数字の表示...
-
名刺の渡し方って
-
クラスモジュールの処理
-
VBでテキストボックスの文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プロシージャまたは関数の引数...
-
【VB6.0】 あるフォームから他...
-
【VBScript】変数のスコープ
-
【HTML、VBScript】HTAアプリケ...
-
PL/SQLのプロシージャ間でカー...
-
ExcelのVBA。Staticな変数について
-
整数を二つ読み込み、それらの...
-
プロシージャを呼び出したプロ...
-
プログラムの素朴な質問です 分...
-
パーソナルXLSBのfuctionを呼び...
-
定数を構造体で・・・
-
引き渡したループ処理で変数がn...
-
SOP
-
HTML + VBScript で Sleep でき...
-
関数の引数
-
変数を複数のモジュール間で共...
-
Excel vba で複数のテキストの...
-
引数
-
subプロシージャーですか?sub...
-
VB初心者の私に教えてください!
おすすめ情報