WSH

VBScriptのExcelインスタンス化 Set objExcel = CreateObject("Excel.Application") がダメ レジストリからサブキー列挙して探してやろう(力技)

Excel.Application.15だったりExcel.Application.16じゃないと通らない環境がある。 複数バージョンインストールしてるとなるっぽい。 こちらはレジストリを循環して探して利用する技 'Excel インスタンス化 Dim existExcel existExcel = False Const HKEY_L…

VBScriptでスクリプトの実行を待つ

set objWshShell = WScript.CreateObject("WScript.Shell") objWshShell.Run """******.exe"" 引数",1,1program filesみたいなフォルダにスペース対策で""でくくっとくといいよ ネタ元 https://ameblo.jp/hiiragi-pc/entry-10903900415.html http://www.tech…

vbsでレジストリに書き込む

wsh

Option Explicit On Error Resume Next Dim objWshShell ' WshShell オブジェクト Set objWshShell = WScript.CreateObject("WScript.Shell") If Err.Number = 0 Then objWshShell.RegWrite "HKCU\WshTest\Test1", "test #1", "REG_SZ" objWshShell.RegWrite…

VBSを管理者権限で起動させる

wsh

VBScriptの冒頭で、一旦、管理者権限へ昇格して、後続の処理を実行させるようにします。 以下は、Vista 以上なら管理者権限へ昇格して実行、Vista未満ならそのまま実行するサンプルです。 Dim WMI, OS, Value, Shell do while WScript.Arguments.Count = 0 a…

VBSでアプリケーションを強制終了

wsh

Excelを落とす場合 for each Process in _ GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery ("select * from Win32_Process where Name='EXCEL.EXE'") Process.terminate Nextネタ元 http://oshiete.goo.ne.jp/qa/1527968.html

vbsでファイル削除

wsh

'WScript.Shellオブジェクトの作成 Set objFileSys = CreateObject("Scripting.FileSystemObject") objFileSys.DeleteFile "c:\hogehoge.txt", True

vbsでレジストリ操作

wsh

読み取り Set WshShell = WScript.CreateObject("WScript.Shell") WScript.Echo WshShell.RegRead("HKCU\Software\Test\") WScript.Echo WshShell.RegRead("HKCU\Software\Test\TestKey")書き込み Set WshShell = WScript.CreateObject("WScript.Shell") Wsh…

VBScriptでExcelアドインのインストール/アンインストール

インストール On Error Resume Next Dim installPath Dim addInName Dim addInFileName Dim objExcel Dim objAddin 'アドイン情報を設定 addInName = "Excel CSV I/O" addInFileName = "ExcelCsvIO.xlam" IF MsgBox(addInName & " アドインをインストールし…

VBA/VBSでショートカットを作成する

Option Explicit Dim WSH,sc Set WSH=CreateObject("WScript.Shell") Set sc = WSH.CreateShortcut("C:\Documents and Settings\xxxx\デスクトップ\メモ帳.lnk") sc.TargetPath = "C:\WINDOWS\notepad.exe" sc.save Set sc = Nothing Set WSH = nothingネタ元…

VBScript で再起動する

WSH

Option Explicit On Error Resume Next Dim objWshShell ' WshShell オブジェクト Dim strCmdLine ' 実行するコマンド Dim varMsg '確認画面 varMsg = MsgBox ("再起動しますか?", vbYesNo, "確認") If varMsg <> vbYes Then WScript.Quit 'スクリプト終了 …

VBScriptでインストールされているExcelが32bitか64bitか判断する

Application.Hinstanceにアクセスできるかどうかで判断する。 https://msdn.microsoft.com/ja-jp/library/office/ff197539.aspx このプロパティでは、32 ビット版の Excel でのみ適切なハンドルが返されます。Excel 2013 で導入された HinstancePtr プロパテ…

VBSでエクセルのバージョン判別してデスクトップへファイルをコピー

wsh

'エクセルのバージョンに合わせてデスクトップへファイルコピー Option Explicit Dim ExcelApp Set ExcelApp = CreateObject("Excel.Application") if ExcelApp is Nothing then MsgBox "Excelがインストールされていません。",vbCritical WScript.Quit end …

VBSでカレントディレクトリを取得

WSH

'カレントディレクトリを表示 Set objWshShell = CreateObject("WScript.Shell") WScript.echo "現在の作業ディレクトリ= " & objWshShell.CurrentDirectoryネタ元 http://www.happy2-island.com/vbs/cafe02/capter00111.shtml

VBSからバッチファイルをコール

[vbs][wsh] Set WSHShell = WScript.CreateObject("WScript.Shell") cmd = "D:\a.bat" return = WSHShell.Run(cmd)ネタ元 http://q.hatena.ne.jp/1221137108

FTPにアップロード

[vbs][wsh] strDest = "ftp://<ユーザー名>:<パスワード>@<ftpドメイン>/<アップロード先フォルダ>" With CreateObject("Shell.Application") Set objDest = .NameSpace(strDest) objDest.CopyHere("C:\Users\ユーザー\Desktop\アップロードしたい.txt") WScript.Sleep(50</ftpドメイン>…

FSO WriteLineでエラー(失敗)する場合はunicodeが原因かも。

[wsh][vbs]unicodeからsjisに変換できない文字があると、書き込めないでエラーになるみたい。出力ファイルをunicodeにしていいなら fso.CreateTextFile("c:\sandbox\hoge.txt",true,true)のようにunicode=trueにすればOK。 sjisじゃないと困る場合はvbsファ…

Errオブジェクトを使ってエラー処理

On Error Resume Next しつつ Errオブジェクトを使えば、エラーで分岐が書ける。ちなみにエラーが無ければ Err.Number = 0 となる Option Explicit Dim dblCalculatedNumber, strDivisorNumber Do strDivisorNumber = InputBox("割る数を入力してください") …

ファイル選択ダイアログGetOpenFilenameの初期フォルダを指定するには.DefaultFilePath を指定した後開放して再度CreateObject()する

[wsh][vbs]一度=NothingしてからCreateObjectしないと設定が反映されない Dim xlApp Dim defPath Set xlApp = CreateObject("Excel.Application") defPath = xlApp.DefaultFilePath If FileFilter = "" Then FileFilter = "すべてのファイル,*.*" If FilterI…

Collectionが使えない代わりにDictionaryを使う

[WSH][VBS]VBScriptではCollectionが使えないらしい Dictionary オブジェクトの宣言と代入 Dim hash Set hash = CreateObject("Scripting.Dictionary") hash.Add "a", 1 hash.Add "b", 2ネタ元 http://vbscript.g.hatena.ne.jp/cx20/20100131/1264906231

ファイル選択ダイアログはExcelを使うのがベターという状況

[WSH][VBS]Excelの機能を呼び出すのが一番いいらしい。変なの。ネタ元 http://froghand0104.blogspot.jp/2010/10/blog-post_24.html '1ファイル選択ファイル Dim Excel, xlBaseFilePath Set Excel = CreateObject("Excel.Application") xlBaseFilePath = Exc…

フォルダ選択

[vbs][wsh] '----------------------------- 'デスクトップのパスを取得 '----------------------------- Public Const CNST_STR_DESKTOP = "Desktop" Dim s_DesktopPath Set objWShell = CreateObject("WScript.Shell") s_DesktopPath = objWShell.SpecialF…

Excel経由でWin32APIを使ってファイルをダウンロードするVBScript

[wsh][vbs]URLと保存先フォルダを指定する例ExecuteExcel4Macroを使う '-------------------------------------- '指定されたURLのファイルをダウンロード '-------------------------------------- Sub SubDownLoad(strURL,saveFolder) Dim saveFilePath Di…

wshでスマートな方法でCSVファイルを読み込む

wsh

[wsh]OLEDBを使うといいらしい。しかし32/64bit等環境の違いが原因で、動かないかも。ネタ元 http://www7b.biglobe.ne.jp/~lunlumo/prog/sample/read_csv.html

VBS CScriptで時間待ち

WSH

3秒後に終了。cscriptで実行してね。 Option Explicit Const INTERVAL = 3 'As Long WScript.Echo CStr(INTERVAL) & "秒後に終了します。" CountDown INTERVAL WScript.Quit Private Sub CountDown(argInterval) Dim cntSec 'As Long cntSec = 0 Do While(cn…

VBS Runメソッドで実行

WSH

Option Explicit Const vbHide = 0 'ウィンドウを非表示 Const vbNormalFocus = 1 '通常のウィンドウ、かつ最前面のウィンドウ Const vbMinimizedFocus = 2 '最小化、かつ最前面のウィンドウ Const vbMaximizedFocus = 3 '最大化、かつ最前面のウィンドウ Co…

ExelVBAシートをカンマ区切りCSV形式で保存するマクロ

デスクトップに出力のパターンはこんな感じ Sub saveAsCSV() Application.DisplayAlerts = False 'デスクトップへ出力 Dim MyWSH As Object Set MyWSH = CreateObject("WScript.Shell") myDeskTopPath = MyWSH.SpecialFolders("Desktop") Set MyWSH = Nothin…

デスクトップパスの取得

Dim MyWSH As Object Set MyWSH = CreateObject("WScript.Shell") myDeskTopPath = MyWSH.SpecialFolders("Desktop") Set MyWSH = Nothing ネタ元 http://www.nurs.or.jp/~ppoy/access/access/acEt013.html

日付をyyyymmddの書式に変換する

Format()を使う Dim today_yyyymmdd today_yyyymmdd = Format(Date, "yyyymmdd")ネタ元 http://www.geocities.jp/cbc_vbnet/function/date.html

文字列を日付にする

"2009/08/26"とかをdate型にする方法です。 dim startdate startdate = DateValue("2009/08/28")参考 http://www.geocities.jp/cbc_vbnet/function/date.html#datavalue

日付(Date型)を文字列にする

文字列型 (String) に変換するにはCStr()を使います。 dim s_yyyy dim s_mm dim s_dd s_yyyy = CStr(Year(startdate)) s_mm = CStr(Month(startdate)) s_dd = CStr(Day(startdate))参考 http://www.kanaya440.com/contents/script/vbs/function/index_abc.ht…