アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのVBAまたはVisualBasic.netを用いて、パソコンのショートカットを操作できないものかと思っております。
概略を申しますと、
1.連番のテキストファイルがあります(これを元ファイルとします)。
2.それをフリーソフトの「softalk」に読み込み対応する連番の音声ファイルに変換します(これを出力ファイルとします)
3.読み込みテキストファイル名と作成する音声ファイル名はエクセルを用いて作製します(これをExcel-Aとします)
ということをしております。
具体的に申しますと

---------------------------------------
1.Excel-Aと「softalk」を立ち上げ

2.Excel-Aの「作成ボタン」をクリックすると「元ファイル名」を作成し、これをクリップボードにコピーします

3.フォーカスを「softalk」に移動し、キー入力(以下同様)「Alt」+「F」→「O]でファイルを開くダイアログボックスを開き「Ctrl」+「V」で「元ファイル名」を貼り付け、「Alt」+「O」でファイルを開き

4.Excel-Aに戻ってボタンをクリックすると、今度は作成ファイル名を作成し、これをクリップボードにコピーします。

5.再び「softalk」に戻って「録音」ボタンを押し、ファイルを保存するダイアログボックスを開き、「Ctrl」+「V]で作成ファイル名を貼り付け、「Alt」+「S」で保存し、録音スタートで録音します

6.2~5を以下繰り返し

------------------------------------
ということをしています。
出来れば、2~5の繰り返し部分をエクセルのVBaまたはVisualBasicで出来ないものか?
せめてショートカットの部分だけでも出来ないものかと思っております。

当方、初心者同然のものですので、身に過ぎた質問だとは思いますが
何かヒントなりでもつかめればと思っておりますので、宜しくお願いします

A 回答 (2件)

 素晴らしい フリーソフト を教えていただきまして、ありがとうございました。



 ただいま、ダウンロード して、softalk の readme.txt を開いてみますと、
'-------------------------------------------------------
【機能説明】
引数に文章/オプションを指定すれば自動で読み上げを開始するので、他のアプリケーションから呼び出して使用することもできます。
【引数指定】
●「引数をファイル名/オプションとして処理する」にチェックすると、引数から以下のような操作が行えます。
〇次のように指定すると、テキストファイルを読み上げます。
 "C:\SofTalk.exe" テキストファイルのパス
〇オプションには設定オプションと実行オプションがあります。
○設定オプションの種類は次の通りです。
/R:録音 録音先のパス
○実行オプションの種類は次の通りです。
[順次実行オプション]
/close 終了
'-------------------------------------------------------
と出ております。

 ということで、コマンドライン から
"{SofTalk.exe の インストール先 フルパス}" D:\hoge\hoge.txt /R:D:\hoge\hoge.wav
"{SofTalk.exe の インストール先 フルパス}" /close
を連続して実行することにより、
1)SofTalk.exe を起動
2)D:\hoge\hoge.txt を読み上げ
3)D:\hoge\hoge.wav として保存
4)(3) の終了後、SofTalk.exe を終了
という一連の動作を行なうことができました。

 なお、SofTalk.exe の [オプション(O)] - [環境設定(S)] で、[設定] ダイアログ を開き、[その他] タブ の
・引数をファイル名/オプションとして処理する
・録音時は読み上げを省略する
に チェック を入れておきます。


 さて、エクセル の VBA で コマンド を実行するには、[Shell 関数] を用いて、
Dim RetVal
RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)  ' 電卓を実行します。
というような使い方をします([Shell 関数] の ヘルプ 参照)。

 ということで、お尋ねの内容でしたら、下記のようなことになろうかと存じます。


Sub test()
 Const SofTalk As String = "c:\Program Files\softalk\SofTalk.exe"
 Dim RetVal As Double
 ChDir "D:\hoge"
 Workbooks.Open Filename:="D:\hoge\hoge.xls"
 RetVal = Shell(SofTalk, vbMinimizedNoFocus)
 Do
  ここで「元ファイル名」と「作成ファイル名」を取得する操作
  RetVal = Shell(SofTalk & " " & 元ファイル名 & " /R:" & 作成ファイル名, vbMinimizedNoFocus)
  If ~~ Then Exit Do
 Loop
 RetVal = Shell(SofTalk & " /close", vbMinimizedNoFocus)
 ActiveWorkbook.Close
End Sub
    • good
    • 0
この回答へのお礼

GW休暇が入ってしまい、返答遅れまして申し訳ありません。
自分で使っているソフトの説明書きをろくに読まずに、質問をしてしまっていた様で
大変恥ずかしく思っております。
さて、お教え頂いた方法を用いたところ、思った以上の効果を得る事ができ、大変感謝しております
実際に使ってみて思ったことは、VBAの処理速度と「softalk」の処理速度が違うので、VBAの方の
処理が直ぐに終わってしまい、「softalk」の方はバッファ処理されているようで、ちょっと
面白いなと感じました。

何はともあれ、懇切丁寧に教えて頂き感謝の限りです
どうもありがとう御座いました。

お礼日時:2010/05/08 18:39

1.VisualbasicのSendKey命令は考慮されたのでしょうか?


2.「softalk」に戻って「録音」ボタンを押す操作は、キーボードだけでできるのですか?
3.マウス操作およびキーボード操作を自動化するソフトがいくつかありますが、そういうソフトではダメですか?
4.連番のテキストファイルの中身、というのは001,002,003とかでしょうか?
  エクセルで連番を作成しておいて、各行に元ファイル名と作成ファイル名を書き出せませんか?以下のように・・・。
001 read001.sound write001.music
002 read002.sound write002.music
    • good
    • 0
この回答へのお礼

GW休暇が入ってしまい、返答遅れまして申し訳ありません。
「キーボード操作を自動化するソフト」というところは今まで発想がなかったので、ありがたい情報でした。
それをどう絡めて行くかということは今後の課題にしたいと思います。
正直、VBに詳しい訳ではないので半分ほども理解できていませんが、時間を掛けて
教えていただいた事を身につけていこうかと思っております。
この度はどうも有難う御座いました。

お礼日時:2010/05/08 17:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!