質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

3回答

7425閲覧

cscriptを用いてバッチからVBSを起動させたい。

apple_apple

総合スコア1

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2021/11/09 11:11

前提・実現したいこと

バッチファイルからVBSを起動する。
VBSはエクセルからテキストファイルを作成するためのもので、
バッチファイルにエクセルファイルを引数として渡してVBSを実行したい。

発生している問題・エラーメッセージ

迺ー蠅・ィュ螳・ini繧剃ス懈・縺励∪縺吶€・ '螳滓命萓晞シ譖ク縲阪r繝峨Λ繝・げ繧「繝ウ繝峨ラ繝ュ繝・・縺励※縺上□縺輔>・・' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 Microsoft (R) Windows Script Host Version 5.812 Copyright (C) Microsoft Corporation. All rights reserved. C:\Users\○○○○\Desktop\folder\test2.vbs(2, 1) Microsoft VBScript 実行時エラー: インデックスが有効範囲にありません 。 迺ー蠅・ィュ螳・ini縺ョ菴懈・縺ォ螟ア謨励@縺セ縺励◆縲・ 続行するには何かキーを押してください . . .

該当のソースコード

bat

1@echo off 2 3echo テキストファイルを作成します。 4set /p form = "excelファイルをドラッグアンドドロップ:" 5 6cscript %userprofile%\Desktop\folder\test2.vbs %form% 7 8if errorlevel 1 ( 9echo テキストファイルを作成しました。 10) else ( 11echo テキストファイルの作成に失敗しました。 12) 13 14pause

vbs

1 ' Excel指定 2file = WScript.Arguments(0) 3 4 ' Excel起動 5Set oXlsApp = CreateObject("Excel.Application") 6 7If oXlsApp Is Nothing Then 8 ' Excel起動失敗 9 MsgBox "Excel起動失敗" 10 11Else 12 ' Excel起動成功 13 14 ' --Excel表示(trueにすると表示できる) 15 oXlsApp.Application.Visible = false 16 17 ' --Excelの警告を非表示にする 18 oXlsApp.Application.DisplayAlerts = False 19 20 ' --ブックを開く 21 oXlsApp.Application.Workbooks.Open(file) 22     ・ 23     ・ 24     ・ 25

試したこと

bat

1@echo off 2cscript %userprofile%\Desktop\folder\test2.vbs %1 3pause

folderフォルダ内で、上記バッチファイルのアイコンに、エクセルファイルをドラッグ&ドロップすると無事テキストファイルが生成されます。
batを複雑にするとおかしくなるのはなぜでしょうか。
引数の渡し方が間違っていますか?

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

apple_apple

2021/11/10 05:37

ありがとうございます!文字化けは解消されました。
BeatStar

2021/11/10 06:18

@ 質問者さん > 文字化けは解消されました では、どのようにやって解消しましたか? otnさんのご回答で、でしょうか。もしそうなら彼/彼女の回答をBAにして閉じてください。 もしそれ以外での解決法で解決したのなら、『自己解決』的なやつがあるのでそこに『どのように解決したか』とかを書いてください。 今のままだと他のユーザからすると『未解決』の状態です。
apple_apple

2021/11/10 06:27

@BeastStarさん 文字エンコードをANSIにして文字化け自体は解決しましたが、すみません、まだ未解決です。
guest

回答3

0

ベストアンサー

BATファイルの文字コードのエンコーディングがUTF-8になっていると思われます。

WScript.Arguments(0)は第一引数を意味しますが、引数を何も指定していないので、エラーです。
%form%が空なのでしょう。set /pに対して何も入力せずにEnterを押しているのでは?

投稿2021/11/09 14:07

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

apple_apple

2021/11/10 05:42

2.について詳しくご教授ください。 set /pに対して対象エクセルファイルを指定していますが、方法が間違っているのでしょうか。 エクセルファイル名を入力で同様のエラーがでます。ドラッグアンドドロップで持っていくと(パス付になる)エクセルファイルが開いて処理が終わります。
otn

2021/11/10 06:28

excelファイルをドラッグアンドドロップ: と表示されると思うので、それに対して何か入力すると、環境変数formにセットされますが、 cscript %userprofile%\Desktop\folder\test2.vbs %form% と、起動したtest2.vbsに渡ってないので、空だと思われます。set /p の直後で、echoしてみましょう。
apple_apple

2021/11/10 08:26

set /pの後にechoすると「ECHOは<OFF>です」となります。 重ね重ね申し訳ありませんが、なぜこのようになるのか仕組みを教えていただけないでしょうか。
otn

2021/11/10 08:59

うっかり見落としていました。 =の前の空白のせいです。 空白を書いてはいけません。 他の言語と事なり、バッチの環境変数名には空白も使えます。 空白を書くと「form」でなく「form空白」という名前の環境変数にセットします。
apple_apple

2021/11/10 09:13

空白を取り除いたところ正常に動きました。 詳しく教えていただき、ありがとうございました。
BeatStar

2021/11/10 10:00 編集

(あ、私もスルーしてたわ...)
guest

0

投稿2024/01/19 06:54

ellylittle

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

[注意]
この回答は回答としてのものではなく、別の方の回答についての補足のようなものです。
この回答をBAにするぐらいなら他の方の回答をBAにしてください
あくまで補足ですから。
(以前私も似たような問題にあったので…)


いわゆる、遅延環境変数の展開ですね。
Windowsのコマンドプロンプトで起きるようです。(他のOSについてはわかりませんが)

ざっくりとしたものは遅延環境変数 -「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典環境遅延変数の原因と2つのポイント - Qiitaを読んでください。

上記サイトで言えば、setlocal enabledelayedexpansionを先頭に置けばいいようです。
試しに echoコマンドを使って、echo %form% のように表示してみてください。

ECHOは<OFF>です的なメッセージになれば環境変数formは空ですね。

ちゃんと想定された文字列が入っていて、それでも…であれば別の原因かもしれませんが。

投稿2021/11/10 06:46

BeatStar

総合スコア4962

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2021/11/10 07:11

今回は、括弧の中やマルチステートメントではないので、遅延環境変数展開は関係ないです。 まあ、実際に動かしているのが、質問文のコードで無いのなら、関係するかも知れませんが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問