• ベストアンサー

VBS★Excel★スクリプト★引数の取得

VBSは初心者というか、やったことがありません。ど素人になります。 説明がとてもぎこちないのもその辺からだと思いますが、宜しくお願いします。 VBのシステムからVBSファイル <内容> Dim wbname Dim mypara Dim file_path Dim oApp file_path = "C:\share\Excel\1234.xls" Set oApp = CreateObject("Excel.Application") oApp.Visible = True On Error Resume Next oApp.UserControl = True oApp.Workbooks.Open "C:\share\Excel\1234.xls" Set oApp = Nothing WScript.Quit を指定して起動すると(1)Excelで作成したシステムが稼動するように作りたいのですが、(1)を起動する環境設定があり、C:\Documents and Settings\MBS\デスクトップ\1111.vbs #CODE #CODEが引数になります。 その#CODEをVBSで取得したいのですが、単体で1111.vbsを動かすとExcelファイルは動きます。 元のシステムではexeファイルしかみないようなのですが、例えば電卓とかメモ帳とかは動きます。vbsファイルだけは動きません。どのようにすれば動くかアドバイスをお願いします。 宜しくお願いします。

  • HCR
  • お礼率87% (14/16)

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

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

VBScript の中で WScript.Arguments(0) のようにすれば一つめの引数を取得できます。 >例えば電卓とかメモ帳とかは動きます。vbsファイルだけは動きません。 の意味が良くわかりません。 質問文のプログラムではそういう部分が無いようですが・・

HCR
質問者

お礼

ありがとうございます。 WScript.Arguments(0)にて値を取得できました。

その他の回答 (1)

  • necomimi
  • ベストアンサー率41% (633/1540)
回答No.2

環境変数からの取得であれば参考URLなのですが そういう意味でもないような…

参考URL:
http://www.atmarkit.co.jp/fwin2k/operation/wsh06/wsh06_02.html
HCR
質問者

お礼

参考になるURLをありがとうございます。 なんとか出来ました。

関連するQ&A

  • vbsでexcelのクリアとフォームの表示をしたい

    お世話になっております。 vbsの以下の記述でexcelを開いています。 開くところまでは行くのですが、その後のsheet1のデータのクリアとUserForm1の表示がどうしてもできません。 申し訳ありませんが、どなたかおわかりの方、教えていただけないでしょうか。 宜しくお願いいたします。 Dim oApp Dim objWshShell Dim scriptPath 'Excelオブジェト作成 Set oApp = CreateObject("Excel.Application") 'WScript.Shellオブジェクト作成 Set objWshShell = CreateObject("WScript.Shell") oApp.Visible = True '不可視にする oApp.UserControl = True 'Excelファイルを開く scriptPath = WScript.ScriptFullName scriptPath = left(scriptPath,len(scriptPath)-len(WScript.ScriptName)) oApp.Workbooks.Open scriptPath & "共同資料.xlsm"

  • アクセスからエクセルを開いてデータを取得するには?

    こんにちは。 MS AccessからExcelを開いて、Excel上のデータを取得したいのですが、下記のようにしたらエラーとなりました。CellsがNGみたいなのですが、AccessではCellsは使用出来ないのでしょうか? 宜しくお願いします。 Dim oApp As Object Set oApp = CreateObject("Excel.Application") oApp.Visible = True On Error Resume Next oApp.UserControl = True oApp.Workbooks.Open Filename:="C:\TEST\Book1.xls" GYO = 1 Do KI = Cells(GYO, 1).Value MsgBox KI GYO = GYO + 1 Loop Until Cells(GYO, 1) = ""

  • Vistaなら1回で行くのにXPだと2回

    エクセルVBAで新たなエクセルアプリケーションを立ち上げるコードが知りたく ネットで検索したら見つけました。 ---------------------------------------- Sub test() Dim oApp As Object Set oApp = CreateObject("Excel.Application") oApp.Visible = True oApp.UserControl = True Set oApp = Nothing End Sub ---------------------------------------- 上記のコードなのですが XPは2回このコードを実行しないと、新たなアプリケーションは立ち上がりません。 vistaなら1回で立ち上がります。 どちらもエクセルのバージョンは2003です。 XPがおかしいのか、2回やらないといけないコードなのかわかりません。 よろしくお願いします。

  • VBSでファイル名にシート内のセルの値を付け足す

    現在下記のコードが書いてあるvbsにエクセルファイルをドラック&ドロップをしてパスを外したり、つけたりしています。 その際に、投げ込んだエクセルファイルのファイル名の頭に 投げ込んだエクセルファイルのシート1のセルA1の値を付けたいと考えています。 例 パスのかかっている 間隔.xls というファイルをVBSに投げ込むと パスが外れ ファイル名が あいう間隔.xls という名前に代わって保存される。コピーではなく投げ込んだシートの名前が変わって問題ありません。 あいう はシートのA1セルに入っていた文字です。 ブック内にシートは必ず1つしかありません。 Option Explicit 'Excel 2013 Later Japenese Version Available 'REF: 'REF: '''///---定数の設定Set Enumuragion---///''' Const PWD="paspas" Const msoLanguageIDInstall = 1 '''///---変数の宣言---///''' Dim objArgs, I , strFile Dim objFile, objFolder,objPath,strScr Dim xlApp,Wb Dim objWShell : Set objWShell = Createobject("WScript.Shell") Dim FSO : Set FSO = Createobject("Scripting.FileSystemObject") '''///---ファイル処理開始 Start Document File Conversion---///''' Set objArgs = Wscript.Arguments For I = 0 to objArgs.Count-1 set objFile = FSO.GetFile(cstr(objArgs(I))) If Lcase(Left(FSO.GetExtensionName(objFile.Path) ,3) )="xls" Then Set xlApp =CreateObject("Excel.Application") If xlApp.Version < 14 Then xlApp.Quit: Set xlApp = Nothing:wscript.Quit xlApp.DisplayAlerts=False xlApp.Visible = False set wb=xlapp.WorkBooks.Open(objFile.Path,0,false,,PWd,,True,,false,false,,true,true) if wb.HasPassword=true then wb.Saveas objFile.Path,,"","",False else wb.Saveas objFile.Path,,Pwd,"",False End if wb.close set wb=nothing End If Next xlApp.DisplayAlerts=True xlApp.Quit set xlApp = Nothing このコードをどのように変更すればできますでしょうか?

  • win7でvbsファイルが実行できない

    以下のようなvbsファイルを実行してデータ取り込みをしていますが、 win7にPCを替えたら実行できなくなりました。 エラーは4行目なのですが、原因がわかりません。 どなたか教えていただけないでしょうか? sPath = "\\snysv○○\○○部\○○DIV\○○書データ\_ ○○データ入力用\○○データ.mdb"'実行するファイルのパスを指定 Set oApp = CreateObject("Access.Application") oApp.visible = FALSE oApp.OpenCurrentDatabase sPath 'ここでエラーになるようです。 oApp.Run "データ取込" 'プロシージャを実行します。 oApp.Quit : Set oApp = Nothing Const OverwriteExisting = True Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.CopyFile "\\snysv○○\○○部\○○DIV\○○書データ\○○書データ入力用\*.xls" , "\\snysv○○\○○部\○○DIV\○○書データ\○○書データ入力用\取込済データ\", OverwriteExisting objFSO.DeleteFile "\\snysv○○\○○部\○○DIV\○○書データ\○○書データ入力用\*.xls" Set FSO = Nothing

  • 【VB6】EXCELセーブ:既に存在していたら自動で数字つけてセーブさせたい

    お世話になっております。 VB6(visual basic 6)プログラムからEXCELのブックをパスを指定してセーブする際、既にその指定のパスのファイルが存在していた場合、に自動的に接尾辞をつけてセーブしたいです。 パスc:\aru_path.xlsでセーブしたいとき、もしすでにc:\aru_path.xlsが存在していた場合、 c:\aru_path_1.xlsとかc:\aru_path(1).xlsのように自動で末尾に数字がつくようにしたいです。 そのとき、 oApp.ActiveWorkbook.DisplayAlerts = False とか手段は何でも良いのですが、自動運転の途中での事なので、自動的に処理が進む意味で、メッセージが出て中断しないようにしたいです。 EXCEL:EXCEL 2000 OS: win XP 以下にターゲットの中核部分を切り出しました。 --- Dim oApp As Object Set oApp = CreateObject("Excel.Application") oApp.Workbooks.Add oApp.ActiveWorkbook.SaveAs "c:\aru_path.xls" '指定のパスで保存 --- ファイルが存在しているがどうかを調べるルーチンがわかればよいかと思い調べましたが分かりませんでした。 どうぞよろしくお願いいたします。

  • vbsからのWordマクロ実行

    やりたいこと  vbsからWordマクロを実行し復帰値をMsgBoxで表示する。 問題点  Test関数を実行し復帰値を取得したいのですがコンパイルエラーとなってしまいます。   正しい書き方を教えてください。 Set oApp = CreateObject("Word.Application") oApp.Documents.Open WScript.Arguments(0) Dim code code = oApp.Run Test ★ MsgBox code

  • vbsスクリプト作成について

    いつもありがとうございます。 今回、知識がないのですが下記のような処理のVBSを作成したく調べております。 (1)test.vbsファイルを実行時にvbsファイルと同じディレクトリに「folder」フォルダを作成 (2)作成した「folder」フォルダにサービス「idsvc」の状態をテキスト形式で「service.txt」として出力 (3)上記と同様の処理(service.txtはリネームする)を現在ログインしているユーザのスタートアップに「start.vbs」として配置 (3)上記処理後、再起動を実施 (4)再起動後、start.vbsを実行後に自動削除 大きく分けて4つの処理を個別に作成して最終1つのファイルとして作成しようと思っております。 なんとかわからいなりに作成してはいるのですが どうしても下記方法がわかりません。 (2)の処理「folder」を作成後、service.txtのパス(最下位行)を変数に入れて出力する方法 (きたないソースで申し訳ないです) ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ' フォルダ作成 '---------------------------------------------- Dim str_Path Dim objFdr Set objFdr = CreateObject("Scripting.FileSystemObject") str_Path = objFdr.CreateFolder(".\folder") Dim WshShell Set WshShell = CreateObject("WScript.Shell") Set objLog = WshShell.Exec("cmd /C ""sc query idsvc | findstr -i state > .\folder\service.txt""") ※サービス出力はvbsでの方法がわからなかったのでcmdを呼び出しています。 (4)再起動後の処理にて、再起動前に作成したフォルダに「service.txt」を出力する方法 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ objVBSFile.WriteLine("On Error Resume Next") objVBSFile.WriteLine("Dim WshShell") objVBSFile.WriteLine("Set WshShell = CreateObject(""WScript.Shell"")") objVBSFile.WriteLine("Set objLog = WshShell.Exec(""cmd /C """sc query idsvc | findstr -i state >C:\services.txt"""")") objVBSFile.WriteLine("Set objFSO = CreateObject(""Scripting.FileSystemObject"")") objVBSFile.WriteLine("objFSO.DeleteFile WScript.ScriptFullName") 他にもわからないことはありますが、調べてなんとかなるとおもっておりますが 上記についてはVBSの理解不足なため、つかめません。 申し訳ありませんが、アドバイス頂けないでしょうか。 以上、宜しくお願い致します。

  •  VBSの作り方がわかりません

    下記のようなVBSを使いたいのですが   テキストでなくエクセルをアクティブにしたいのですがうまくいきません   どのように直せばよいのかお教えください。  お願いいたします。 Dim excel With CreateObject("Wscript.Shell") .Run "D:\DATA\T.txt" End With On Error Resume Next Set excel = GetObject(, "Excel.Application") If Err.Number <> 0 Then Set excel = CreateObject("Excel.Application") End If excel.Visible = True excel.Workbooks.Open "D:\DATA\Sin1.xls"

  • ACCESSのVBAでテンプレとなるxlsファイルを開き、編集を完了し

    ACCESSのVBAでテンプレとなるxlsファイルを開き、編集を完了してSaveAsメソッドで違う名前で保存したいのですが、以下のコーディングではパス名が存在しないor別プログラムで開かれているなどとエラーメッセージが表示されます。どこがいけないのでしょうか?   Dim oApp As Object Dim xlBook As Object Dim strWORK As String Dim i As Integer Dim strMDBPATH As String Dim strXLSFILE As String Dim strSaveFile As String 'Accessの起動位置を取得 strWORK = CurrentDb.Name '後ろから1文字単位で¥を探す For i = Len(strWORK) To 1 Step -1 If Mid(strWORK, i, 1) = "\" Then Exit For '¥だったら抜ける Next i 'D:\xxxx\yyyy\zzz.mdb --> D:\xxxx\yyyy\ にする strMDBPATH = Mid(strWORK, 1, i) 'Excelの元ファイルの名前を作成 D:\xxxx\yyyy\ + テンプレート.xls strXLSFILE = strMDBPATH & "回答票テンプレ.xls" Set oApp = CreateObject("Excel.Application") Set xlBook = oApp.Workbooks.Open(strXLSFILE) oApp.Visible = True 'Only XL 97 supports UserControl Property ' On Error Resume Next ' oApp.UserControl = True '回答票テンプレを開く ' oApp.Workbooks.Open FileName:=strXLSFILE oApp.Range("C10") = Me!起票日.Value oApp.Range("H10") = Me!所属部門.Value oApp.Range("P10") = Me!起票社員番号.Value oApp.Range("T10") = Me!起票社員名.Value oApp.Range("C17") = Me!対象システム.Value oApp.Range("K17") = Me!処理区分.Value oApp.Range("P17") = Me!対象画面.Value oApp.Range("C21") = Me!改修内容.Value oApp.Range("C38") = Me!回答日.Value oApp.Range("I38") = Me!回答社員名.Value oApp.Range("C43") = Me!回答内容.Value strSaveFile = Me!所属部門 & "_" & Me!起票日 & ".xls" xlBook.SaveAs FileName:=strMDBPATH & strSaveFile