e日記風 独り言

気まぐれ & 気まま & 天邪鬼な老いぼれ技術屋の日々の記録のうち、パソコン技術やインターネット技術、プリンタやPCアプリからプログラム言語などに関連した記事です。
Access Counter:  総アクセス数
-1431- 転んでも・・・
苦労している VBAなんだが、色々やっているうちには思わぬ成果もある。
そのうちの一つは、Excelが セルのコピペの時に出す「ピポッ」と言う音を消すワザ。普段はそれほどにも感じないが、マクロでは何十回もコピペを繰り返すことだってある。そうなるともう「ピポッ ピポッ ピポッ ピポッ ・・・・」と際限なく続いてうるさいというより間抜けな感じすらしてくる。何とかこの音が消せないだろうかと Webを探しまわったが、VBA内だけで簡単に解決できる方法は見つけられなかった。もちろん「Excelのオプション > 詳細設定 > 操作の結果を音で知らせる」のチェックは外してある。それでもこの「ピポッ」音は消えない(・・・と思ったが、実はその後 入れていたユーティリティの ArtTipsというクリップボード履歴を残すツールでコピー時の効果音を設定していたことを発見、そちらを外して解決したが一応ワザとして残しておくことに)。
そんな中で、英語のページを幾つか繋げたらシステム音量全体をコントロールする方法に辿り着いた。ほとんどのページではミュートする方法を説明しているが、これだとトグル動作になってしまい、ミュート中なのかどうかを検出する方法がわからないと実質的に使えない。
下記の方法は 音量ボリュームを 20%ずつアップ・ダウンさせる方法でピッタリ元の音量に戻せないかもしれないが実質的には問題ないと思う。
標準モジュールに
-----------------------
Private Declare Sub Sleep Lib "KERNEL32.dll" _
(ByVal dwMilliseconds As Long)

Sub volchange(vol As Long)
Dim oShell As Object
Set oShell = CreateObject("WScript.Shell")
oShell.Run "%SystemRoot%\System32\SndVol.exe"
Sleep 500
If vol < 0 Then
  For i = vol To 0
   oShell.SendKeys "{PGDN}" ' Vol down -20%
  Next i
Else
  For i = 0 To vol
   oShell.SendKeys "{PGUP}" ' Vol up +20%
  Next i
End If
oShell.SendKeys "%{F4}" ' ALT F4 to exit the app.
End Sub
-----------------------
ターゲットのサブルーチンに
-----------------------
call volchange(-4)
' コピペ処理
call volchange(4)
-----------------------
"Sleep 500" は多分 サウンドコントロールの表示待ちのディレイだろうと思う。削除すると動作しないが 100ms なら私のマシンではOK。
そのうちに別ページを立てておこう。

今日の写真はユリの仲間。カスケードとか言ったと思うが花弁に赤いポツポツが無いから別の名前かも? 園芸種は種類が多すぎて名前を覚える気にもならない。ずいぶん派手な花だ。
2015/06/17