- ベストアンサー
VBA コントロールパネルの機能を呼び出す
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こちらはどうでしょうか。 WSHテクニック集 http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/technic.htm コントロールパネルの中身を直接実行 http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/technic.htm#コントロールパネルの中身を直接実行
その他の回答 (1)
- xls88
- ベストアンサー率56% (669/1189)
追加です。 WSHでコントロールパネルの起動 http://d.hatena.ne.jp/t_amago/20080518/p1
お礼
判りやすいです。再度ありがとうございます。
関連するQ&A
- ApacheをVBAのWshellで起動したい
WindowsXPに入れたApacheをコマンドプロンプトで次のようにして必要な時だけ起動しています。 CD C:\Program Files\Apache2412\Apache24\bin httpd -k start これをVBAのWshellでやりたいのですが、エラーになってできません 下記どちらでも「Runメソッドは失敗しました」になります Sub Sample_WShell01() Dim ShellObj Set ShellObj = CreateObject("WScript.Shell") ShellObj.Run "CD C:\Program Files\Apache2412\Apache24\bin", 0, true ShellObj.Run "httpd -k start", 0, true End Sub Sub Sample_WShell01() Dim ShellObj Set ShellObj = CreateObject("WScript.Shell") ShellObj.Run "C:\Program Files\Apache2412\Apache24\bin\httpd -k start", 0, true End Sub パスを通しておけば下記でできるのはわかってますが… Sub Sample_WShell01() Dim ShellObj Set ShellObj = CreateObject("WScript.Shell") ShellObj.Run "httpd -k start", 0, true End Sub パスの通ってない状態ではできないのでしょうか、教えてください 書き方だけのような気はしますが…
- ベストアンサー
- Visual Basic
- Windows Script Hostは、スクリプ
Windows Script Hostは、スクリプト言語なのでしょうか? Sub Sample() Dim WSH As Variant Set WSH = CreateObject("Wscript.Shell") Debug.Print WSH.SpecialFolders("Favorites") Set WSH = Nothing End Sub このようなコードでVBAでWSHを使っていますが WSHが何なのかわからないまま使っています。
- ベストアンサー
- Visual Basic
- ダブルコーテーションで3度も囲ってるのですが
vbsで電卓を起動する時 Set objWshShell = WScript.CreateObject("WScript.Shell") objWshShell.Run """CALC.EXE""" のように、CALC.EXEをダブルコーテーションで3度も囲ってるのですがなんででしょうか? VBAの場合は Sub test() Dim i As Long i = Shell("CALC.EXE") End Sub のように3重には囲わなくても起動します。
- ベストアンサー
- Visual Basic
- (VBA) Dir 関数で取得するファイル一覧の順序
タイトルの通り、下記のサンプルコードを実行して取得するファイル一覧の順序についての質問です。 Public Sub Test1() Dim WSH As Object Dim MyPath As String Dim MyFileName As String Set WSH = CreateObject("WScript.Shell") MyPath = WSH.SpecialFolders("MyDocuments") MyFileName = Dir(MyPath & "\" & "*.*") Do Until MyFileName = "" MsgBox MyFileName MyFileName = Dir Loop Set WSH = Nothing End Sub (質問) ファイル名の昇順では取得できないようですが、もしファイル名の昇順に並べ替えるとしたら、 どのように処理したらよいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- エクセルVBA:perlで作成したexeが失敗する
VBAプログラムで詰まってしまったので質問します。 perlにて自作したexeファイルをexcelのボタンから開きたいのですが、 実行の途中で止まってしまうようなのです。 止まってしまうexeファイルは、自分でダブルクリックして起動すると正常動作する為、 原因がわかりません。 'Declare Function ShellExecute Lib "shell32.dll" _ 'Alias "ShellExecuteA" ( _ 'ByVal hwnd As Long, _ 'ByVal lpOperation As String, _ 'ByVal lpFile As String, _ 'ByVal lpParameters As String, _ 'ByVal lpDirectory As String, _ 'ByVal nShowCmd As Long) As Long 'lRet = ShellExecute(0, "open", sPASS, vbNull, vbNull, SW_NORMAL) 'With CreateObject("Wscript.Shell") ' .Run "***********************", 5 'End With 'MsgBox "vbCrLf & CurDir & vbCrLf" 'Shell "**********************", 1 'With CreateObject("Wscript.Shell") ' .Run "..************", 5 'End With 'Dim ret As Long 'With CreateObject("Wscript.Shell") ' ret = .Run("*************", 7, True) 'End With 'If ret <> 0 Then MsgBox "失敗しました": Exit Sub 'Shell "*****************************" 'Dim WSH 'Set WSH = CreateObject("Wscript.Shell") 'WSH.Run "*************************", 3 'Set WSH = Nothing 'Dim file As Variant 'file = Application.GetOpenFilename 'file = "****************** " + file 'Shell (file) 'On Error GoTo errline 'ret = ShellExecute(0, "open", "***************", "", Path, 1) 'errline: 'Err = 0 'Dim ファイルのあるフォルダ As String 'Dim ファイルの名前 As String 'Dim プログラムのパス As String 'Dim 拡張子 As String 'ファイルのあるフォルダ = Worksheets("Sheet1").Cells(1, 1) 'ファイルの名前 = Worksheets("Sheet1").Cells(2, 1) 'プログラムのパス = Worksheets("Sheet1").Cells(3, 1) '拡張子 = Worksheets("Sheet1").Cells(4, 1) 'Dim ファイルのパス As String 'ファイルのパス = ファイルのあるフォルダ & "\" & ファイルの名前 & "." & 拡張子 'Dim AppFp As String 'AppFp = プログラムのパス & " """ & ファイルのパス & """" '前の""はスペース空ける '「"」が特殊文字であるため、スキップするための文字(エスケープ文字)「"」を前につける 'Dim a As Integer 'a = Shell(AppFp, vbNormalFocus) '上記プログラム全部× Const vbHide = 0 'ウィンドウを非表示 Const vbNormalFocus = 1 '通常のウィンドウ、かつ最前面のウィンドウ Const vbMinimizedFocus = 2 '最小化、かつ最前面のウィンドウ Const vbMaximizedFocus = 3 '最大化、かつ最前面のウィンドウ Const vbNormalNoFocus = 4 '通常のウィンドウ、ただし、最前面にはならない Const vbMinimizedNoFocus = 6 '最小化、ただし、最前面にはならない 'Dim objWShell 'Set objWShell = CreateObject("WScript.Shell") 'できたが×途中で終了している模様 'フォルダ「C:\happy」を開きます 'objWShell.Run "rundll32.exe url.dll" & _ ' ",**************", vbNormalFocus, False 'WScript.Echo "**********を実行しました!" 'Set objWShell = Nothing どうにかVBAから起動したいのですが、方法は無いでしょうか??
- ベストアンサー
- その他(プログラミング・開発)
- WSH動作しない!!(WScript.SleepとSendKeys?)
WSHが動作しなくて困っています。 動作するコードとしないコードは次のとおりです。 いずれも@ITに掲載されているサンプルコードをそのままです。 動作しないコードについても,notepadの起動まではできます。 どうやら,sleepとsendkeysが動いてくれないようです。 <正常に動作するコード> Set objShell = WScript.CreateObject("WScript.Shell") WScript.Echo "メモ帳を起動します。" objShell.Run "notepad.exe" http://www.atmarkit.co.jp/fwin2k/operation/wsh03/wsh03_02.html <動作しないコード> Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run "notepad.exe" WScript.Sleep 1000 objShell.SendKeys "hello" http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_04.html ■動作環境 Win XP Pro IE 6.0 ちなみに,WSHファイルに対する実行権限はあります(フルコントロールです)。 以上なのですが,何か点検するべき事項などありましたらご教示ください。
- ベストアンサー
- その他(プログラミング・開発)
- Excelで、WScript.Shell、標準出力
Excelで、WScript.Shellを使って、標準出力を経由してデータを取得 Excelで、CreateObject("WScript.Shell")を使って、標準出力を経由してデータを取得したいと考えたのですが、サイズに制限がありそうです。 標準出力のサイズが4096バイトを超えると、DOS窓が閉じず、強制的に終了させると超えた分はどこかへ消えました。 下記のコードで確かめたのですが、何かこの容量の制限を取り払う方法はないでしょうか? Sub Sample1標準出力0() Dim WSH, wExec Dim sCmd As String Dim Result As String Set WSH = CreateObject("WScript.Shell") sCmd = "type D:\t.txt" Set wExec = WSH.Exec("%ComSpec% /c " & sCmd) Do While wExec.Status = 0 DoEvents Loop Result = "" Result = wExec.StdOut.ReadAll Debug.Print Len(Result) MsgBox Result Set wExec = Nothing Set WSH = Nothing End Sub
- ベストアンサー
- Excel(エクセル)
- Object型じゃない型で宣言したいです。
Function MyDesktop() Dim WSH Set WSH = CreateObject("Wscript.Shell") MyDesktop = WSH.SpecialFolders("Desktop") Set WSH = Nothing End Function このコードの Dim WSH に、ちゃんと変数の宣言をしてあげたいのですが 何で変数の宣言をして、どこに参照設定をすればいいのでしょうか? Object型じゃない型で宣言したいです。
- ベストアンサー
- オフィス系ソフト
- VBA 新規にエクセルを開き既存のファイルを開く
VBAで新規にエクセルのアプリケーションを起動し、 その中に既存のファイルを起動する方法は有りますか? Sub Sample() Dim appExcel As Excel.Application Dim WSH As Variant Dim strPath As String Set appExcel = New Excel.Application Set WSH = CreateObject("Wscript.Shell") strPath = ActiveWorkbook.Path With appExcel .Visible = True .Workbooks.Add .ActiveWorkbook.SaveAs (strPath & "\ test.xls") End With Set WSH = Nothing End Sub このコードは、ネットから拾ったサンプルコードなのですが 新しいアプリケーションでエクセルを立ち上げることはできたのですが 新規のブックが開いてしまい、 更に、開きたいファイルに上書き保存してしまいそうです。 新規のブックが開く原因は .Workbooks.Addで、 上書き保存する原因は .ActiveWorkbook.SaveAs だとわかってるのですが、 この部分を同変更すればいいのかがわかりません。 Workbooks.Open?Filename:="C:\Users\test.xlsx" だと、現在実行しているvbaファイルを同じ枠内で 該当のファイルが開いてしまいます。
- ベストアンサー
- オフィス系ソフト
- コントロールパネルについて
コントロールパネルのプログラムの追加と削除を実行したら、 "shell32.dll.Control_RunDLL"C:\WINDOWS\System32\ appwiz.cpl..0"プログラムの追加と削除の実行中に例外が発生しました。というのがでてきて実行することができません。なにか知っている方がいたら教えてください。
- 締切済み
- その他(インターネット・Webサービス)
お礼
大変参考になりました。ありがとうございます。