◆マクロを使うには
WordやExcelでマクロを使う場合のやり方です。
・Alt+F11を押すと、Visual Basicが立ち上がります。
・「ファイル」⇒「オプション」「リボンのユーザー設定」で「開発」のチェックを入れる方がいいでしょう。
・たとえば、開発タブの「挿入」「フォームコントロール」で「ボタン」を作ります。「新規作成」を押すと、Visual Basicの画面になるので、スクリプトを書きます。
・または、マクロを押して、行動を記録すると、自動でスクリプトを書いてくれます。
・ファイルの拡張子はxlsmにする
マクロの基本的な使い方は以下
https://udemy.benesse.co.jp/office-enhance/excel-macro.html
(1)まずはやってみよう
・たとえば、開発タブの「挿入」「フォームコントロール」で「ボタン」を作ります。「新規作成」を押すと、Visual Basicの画面になるので、スクリプトを書きます。
------
Sub ボタン1_Click()
Shell "C:\Windows\Notepad.exe"
End Sub
--------
・上書き保存して完成。このとき、ファイルの拡張子はxlsmにする
とても簡単ですね。
(2)もう少し丁寧に書く
VBAの構文は、以下です。
Dim 変数 as データ型
①変数に入れてみる
Sub test()
Dim i As Long
i = Shell("C:\Windows\Notepad.exe")
End Sub
※test()としているが、クリック時に実行する場合は、以下でよい。
Sub ボタン1_Click()
②起動方法を変える。
最小化するのか、最大化するのか、前回の配置に置くのか。
以下にそれぞれの書き方がありますが、今回は、前回閉じた
状態にするためvbNormalFocusを指定
https://www.tipsfound.com/vba/05shell
Sub ボタン1_Click()
Dim i As Long
i = Shell("C:\Windows\Notepad.exe",vbNormalFocus)
End Sub
③iの変数って何か
なぜiを宣言するのか。先のように宣言しなくてもいいであるが、まずは、iに何が入っているかを確認しましょう。
以下を追加して、iの値を調べます。
MsgBox "i=" & i
Sub ボタン1_Click()
Dim i As Long
i = Shell("C:\Windows\Notepad.exe", vbNormalFocus)
MsgBox "i=" & i
End Sub
すると、13888と出たり、15400と出たり、毎回違う値が出ます。
ただ、失敗すると0になります。
iを0以外の場合、つまり成功した場合にはSuccess!と表示しましょう。
Sub ボタン2_Click()
Dim i As Long
i = Shell("C:\Windows\Notepad.exe", vbNormalFocus)
If i <> 0 Then MsgBox "Success!"
End Sub
(3)セキュリティ警告
・マクロは危険です。利用者にとっても便利ですが、攻撃者にとっても便利。
・マクロの自動起動もできるし、一つのボタンで、複数の処理を走らせることも可能。攻撃者がいるとすると、利用者が目を引くような処理をさせておいて、裏で違うことをするなどもできそうだ。
・2003まではxlsで共通だったが、2007以降は、マクロ無しは拡張子がxlsx、有りはxlsm。
・また、ファイルを開くとセキュリティ警告が出る。「コンテンツの有効化」のボタンを押す。
(3)その他
①自動実行は以下
Sub AutoOpen()
End Sub
例としては、以下
②コメントアウトは '
' Shell "Notepad.exe"
WordやExcelでマクロを使う場合のやり方です。
・Alt+F11を押すと、Visual Basicが立ち上がります。
・「ファイル」⇒「オプション」「リボンのユーザー設定」で「開発」のチェックを入れる方がいいでしょう。
・たとえば、開発タブの「挿入」「フォームコントロール」で「ボタン」を作ります。「新規作成」を押すと、Visual Basicの画面になるので、スクリプトを書きます。
・または、マクロを押して、行動を記録すると、自動でスクリプトを書いてくれます。
・ファイルの拡張子はxlsmにする
マクロの基本的な使い方は以下
https://udemy.benesse.co.jp/office-enhance/excel-macro.html
(1)まずはやってみよう
・たとえば、開発タブの「挿入」「フォームコントロール」で「ボタン」を作ります。「新規作成」を押すと、Visual Basicの画面になるので、スクリプトを書きます。
------
Sub ボタン1_Click()
Shell "C:\Windows\Notepad.exe"
End Sub
--------
・上書き保存して完成。このとき、ファイルの拡張子はxlsmにする
とても簡単ですね。
(2)もう少し丁寧に書く
VBAの構文は、以下です。
Dim 変数 as データ型
①変数に入れてみる
Sub test()
Dim i As Long
i = Shell("C:\Windows\Notepad.exe")
End Sub
※test()としているが、クリック時に実行する場合は、以下でよい。
Sub ボタン1_Click()
②起動方法を変える。
最小化するのか、最大化するのか、前回の配置に置くのか。
以下にそれぞれの書き方がありますが、今回は、前回閉じた
状態にするためvbNormalFocusを指定
https://www.tipsfound.com/vba/05shell
Sub ボタン1_Click()
Dim i As Long
i = Shell("C:\Windows\Notepad.exe",vbNormalFocus)
End Sub
③iの変数って何か
なぜiを宣言するのか。先のように宣言しなくてもいいであるが、まずは、iに何が入っているかを確認しましょう。
以下を追加して、iの値を調べます。
MsgBox "i=" & i
Sub ボタン1_Click()
Dim i As Long
i = Shell("C:\Windows\Notepad.exe", vbNormalFocus)
MsgBox "i=" & i
End Sub
すると、13888と出たり、15400と出たり、毎回違う値が出ます。
ただ、失敗すると0になります。
iを0以外の場合、つまり成功した場合にはSuccess!と表示しましょう。
Sub ボタン2_Click()
Dim i As Long
i = Shell("C:\Windows\Notepad.exe", vbNormalFocus)
If i <> 0 Then MsgBox "Success!"
End Sub
(3)セキュリティ警告
・マクロは危険です。利用者にとっても便利ですが、攻撃者にとっても便利。
・マクロの自動起動もできるし、一つのボタンで、複数の処理を走らせることも可能。攻撃者がいるとすると、利用者が目を引くような処理をさせておいて、裏で違うことをするなどもできそうだ。
・2003まではxlsで共通だったが、2007以降は、マクロ無しは拡張子がxlsx、有りはxlsm。
・また、ファイルを開くとセキュリティ警告が出る。「コンテンツの有効化」のボタンを押す。
(3)その他
①自動実行は以下
Sub AutoOpen()
End Sub
例としては、以下
Sub autoopen()
Dim ret As Long
ret = Shell("C:\WINDOWS\SYSTEM32\CALC.EXE")
End Sub
' Shell "Notepad.exe"
コメント