VBSでInputBoxの戻り値は256文字まで?

このQ&Aのポイント
  • VBSのInputBoxを使用して入力された文字列をテキストファイルにするスクリプトを作成している際、InputBoxの戻り値が256文字までしか取得できないことに気づきました。
  • 他の方法で文字列を取得する代替手段を考える必要があります。
  • 解決策については、インターネットで検索しても詳細な情報が見つかりませんでしたが、他の方法を使用するか、制限を回避する方法があるかもしれません。
回答を見る
  • ベストアンサー

VBSでInputBoxの戻り値は256文字まで??!!

Inputboxで入力された文字列を テキストファイルにするスクリプトを組んでいるのですが、 完成間近になってうまく出来ていないことに気が付きました。 それはInputboxの戻り値がなぜか256文字?までしか取れないみたい、ということです。 たとえばこんな感じ a=inputbox("aaa") msgbox a とやると256文字以上は出ません・・。 aに直接代入した場合には大丈夫なのでInputboxの問題のようなきがします。 WEBでいろいろ検索してみたのですが、そのような制限があるという記述を見つけられませんでした・・。 何か解決方法があったら、思いつきでもいいので教えてください。 (代替手段でもいいです)

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

InputBox のMSのマニュアルを読んでも特に何文字まで入力できるとは書いていませんね。 ウチでも試してみましたが、256文字以上は捨てられるようです。 やはり、InputBox がそういう仕様だということだと思います。 >何か解決方法があったら HTAアプリケーションにして、 TEXTAREA を使って入力するようなのはどうでしょうか? あるいは、コンソールプログラムにして、コンソールから入力するようにするとか

azicyan
質問者

お礼

残念です。 回答ありがとうございました

関連するQ&A

  • Win32でInputBoxを実装するには?

    Win2000+ActivePerl 5.8.7 の環境です。 PerlでGUIということで、メッセージボックスであれば、次のようにして実現できました。 ------------ use Win32; my $msg = $ARGV[0]; my $icon = $ARGV[1]; my $caption = $ARGV[2]; my $result = Win32::MsgBox($msg, $ico, $caption); print "$result\n"; ------------ これと同様に、InputBoxのようなこと -------------------------------- ダイアログウィンドウを表示し、文字列の入力を促して、 Enterすると、スクリプト内の関数戻り値として、その文字列を 取得できるようなもの。 -------------------------------- が出来ないでしょうか。 ネット上色々と探し回ってみましたが、単純には見つかりませんでした。 ( Haven't yet implemented function inputbox...) 何か自分で組み合わせて作成する必要があるのでしょうか? (DOS窓経由であれば、単純に、$txt=<STDIN>; で取れるのですが) よろしくご教示ください。

    • ベストアンサー
    • Perl
  • excel vba inputbox

    初心者です。質問させて下さい。 inputboxでhelpを参照すると、typeの指定は以下ですが、 値 意味 0 数式 1 数値 2 文字列 (テキスト) 4 論理値 (True または False) 8 セル参照 (Range オブジェクト) 16 #N/A などのエラー値 64 数値配列 やはり、図形を選択させる事は不可能でしょうか? 具体的には、 マクロ実行中にinputboxを表示させて、図形を選択させ、図形名を表示させて、その図形を既定の図形に設定させたいと思っています。 図形を一つ選択した状態ならば、その図形の名前は以下のコードのように取得できるのですが、inputboxでは図形がなぜか選択できないです。 そもそも、inputboxを使用しようと思ったのは、他のコマンドやツール等が非選択状態になること、またマクロ実行の途中で一時中断することができ、これらの条件は便利だし必要だと思ったからです。 inputboxは何かで設定を変える等で図形を選択できるのでしょうか?無理でしょうか? また、代替的なものは他にあるのでしょうか? Sub testA() Dim Def As Object Set Def = Excel.Selection If TypeOf Def Is Excel.Rectangle Then MsgBox (Def.Name) End If End Sub 無理な質問かもしれませんが、どなたか御教授お願い致します!

  • Excel VBAのInpuboxの文字列

    Inputboxにセル番地A1を入れ戻り値を変数に格納してその変数をRange またはCellsに組み込む場合、どう記述すればいいでしょうか。

  • 文字列から特定の文字を抜き出す

    こんにちは。 シェルスクリプトで文字列から特定の文字を抜き出し、 変数に入れたいのですが、うまくいきません。 申し訳ありませんが、アドバイスをお願いいたします。 文字列 $moji=aaa_bbb_ccc (文字は変動します) $a=aaa $b=bbb $c=ccc と"_"毎に変数に代入したい。 echo $moji | awk -F_ '{print $2}' で文字を標準出力に取り出すことはできるのですが、 そこから変数に代入する方法がいまいち分かりません。

  • 想定外の戻り値に付いて

    Linux系OSのシェルスクリプトについて質問です。 スクリプトの内容としては各主要サービスの起動と停止を行う内容になります。 ここでお伺いしたい内容はスクリプトの途中でサービスが起動しているかどうか、grepの戻り値によって処理を変更する場合にgrepの戻り値がどうにもおかしい場合、どのような原因が考えられるか、ということです。 【スクリプト内容(抜粋)】 #!/bin/bash ---中略--- echo "Apache2起動前確認" | tee -a ${LOG} ps -ef | grep apache2 | grep -v "grep" > /dev/null if [ $? == 0 ]; then ---省略--- 上記の内容はapache2を起動する際、apache2が起動していれば処理を中止する内容の一部ですが、当然起動していればpsコマンドで内容が出るのでgrepの戻り値は0になり、「then」の内容が実施されます。 これはこれで完成されているので問題なく稼動します。 しかしこれとまったく同じ内容で、apache2をmysqlに変更したものが問題でこちらが正常に動作しないのです。 【スクリプト内容(抜粋)】 #!/bin/bash ---中略--- echo "MySQL起動前確認" | tee -a ${LOG} ps -ef | grep mysql | grep -v "grep" > /dev/null if [ $? == 0 ]; then ---省略--- これだとなぜか停止しているときに戻り値が「0」、起動しているときに戻り値が「1」になってしまいます。 ifとpsの間に「echo $?」をかませてみても想定外の戻り値がセットされているためif文そのものには間違いはありません。 また、コマンドラインで「ps -ef | grep mysql | grep -v "grep" > /dev/null ; echo $?」を 実施しても戻り値は「1」に(停止している場合)なるのですが、スクリプト上では戻り値「0」がセットされるようです。 何ゆえこのような意図しない動作をするのか考えてもわかりません。 apache2の場合だと正常に動くだけになおわかりません。 因みに停止しているとき、起動しているときでまったく逆の戻り値がそれぞれ返ってきているようです。 どなたか原因がわかる人は教えてください、宜しくお願いいたします。

  • <aタグで変数に文字を代入

    JavaScriptをはじめて勉強し始めました。 今、変数のやり取りについて勉強しているのですが、 http://aaabbb.com/aaa/bbb.zip というアドレスがあったとして、 <script type="text/javascript"> <!-- function out(){ var urldata; // --> </script> 上の『urldata』にhttp://aaabbb.com/aaa/bbb.zipを代入したいのです。 でも、タダ代入するだけでなく、 <a href=""></a>で代入したいのです。 つまり、リンクをクリックすると、http://aaabbb.com/aaa/bbb.zipがurldataに代入されるようにしたいのですが・・・ どう書けばいいのかが分かりません。 ためしに書いてみても、全然代入されませんでした。 <a onclick="urldata='http://aaabbb.com/aaa/bbb.zip';out()" href="#">テスト</a> すみませんが、ご教授ください

  • グラフのタイトルにセル内の文字列を使うには?

    Excelにて、InputBoxで入力された数の行を参照して、 グラフを生成するマクロを以下のように作成しています。 データの範囲は以下のようにInputBoxでの入力された数値を使って 処理できたのですが、タイトルが上手く処理できません。 入力された数値を利用して、値を参照するセルの位置を決定し、 そのセルに入力されている文字列を .ChartTitle.Characters.Text の値として代入したいのですが どう記述すればいいのでしょうか? 以下のように(抜粋)、セルの範囲を一旦変数titleRangeに代入し、 .ChartTitle.Characters.Text = "=Sheet1!" & titleRange と記述して、セル内の文字列を参照させたかったのですが、 文字列として、シート名と変数名がそのまま表示されてしまいます。 初心者なので、分かりにくい説明で申し訳ありませんが、 グラフのタイトルに指定したセル内の文字列をセットする 方法を教えていただけないでしょうか? colNum = InputBox("対象行") titleRange = "R" & colNum & "C1" With ActiveChart   .HasTitle = True   .ChartTitle.Characters.Text = "=Sheet1!" & titleRange End With

  • C++の複数戻り値について

    質問の閲覧ありがとうございます。 C++をはじめたばかりで勉強中のみなのですが どうしてもうまくいかない壁にぶつかってしまったので 是非お力を貸していただきたく、質問させていただきました。 C++にて課題を出されていまして、それを実現するのに ある関数に対し引数を複数渡し、戻り値を複数得たいのですが 下記のようなコードで、(実際は戻り値、引数がもっと多くなる 想定なのでreturnでは足りないです) 単純に、mainのa2の引数を"参照渡し"としtestにて代入した文字列を mainで再度受け取る、といったことを試しているのですが、うまくいかず このような形では実現不可能なのでしょうか? (文字列の代入をstrcpyに、charの宣言時に要素数を指定したりせずに) #include<iostream> using namespace std; void test(char* a2); int main() { char a2; test(&a2); cout << a2 << endl; } void test(char* a2) { a2="TEST_MESSEAGE1"; } 素人丸出しな内容で申し訳ないですが、ネット上の色々なサンプル等 で試してみても、理解がうまく得られませんでした。。。 ポインタ等の理解が浅いのもあるのかと思いますが。 ぜひご教授よろしくお願いいたします。

  • [VBS]変数を定数に変換する方法を教えて下さい。

    初心者です。 ある実行結果を持っている変数から、新たにリテラル文字列として変数を 代入する要件があり、クリアできず非常に困っています、、、。 どなかたご教示頂ければと思います。 以下例、変数Aのリテラル定数を変数Bに代入したいのですがやり方がわかりません。 (単純にリテラル文字列として渡したいです。) 【例】 -------------- A = "123" const B = A msgbox B -------------- よろしくお願いします。

  • InputBox関数について教えて下さい。

    InputBox関数について教えて下さい。 記述内容は以下の通りです。 Sub 追加() Dim tuika As Double tuika = Application.InputBox( _ Title:="追加", _ Prompt:="追加する項目を【全角大文字】で入力して下さい。", _ Left:=700, _ Top:=100, _ Type:=2) If tuika = False Then Exit Sub With Worksheets("Sheet1") .Range("B10").Value = tuika LastRow = Worksheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row + 1 Worksheets("Sheet2").Range("A" & LastRow).Value = Worksheets("Sheet1").Range("B10").Value End With End Sub 困っているのは、Type:=2)の部分です。 文字列を指定しているのですが数値は入力出来るのですが肝心の文字列が入力出来ない状況です。 どなたかご指導をお願い致します。 【環境】 OS = WindowsXP SP3 Excel = 2003

専門家に質問してみよう