エクセルの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で出来ないものか?
せめてショートカットの部分だけでも出来ないものかと思っております。
当方、初心者同然のものですので、身に過ぎた質問だとは思いますが
何かヒントなりでもつかめればと思っておりますので、宜しくお願いします
No.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
GW休暇が入ってしまい、返答遅れまして申し訳ありません。
自分で使っているソフトの説明書きをろくに読まずに、質問をしてしまっていた様で
大変恥ずかしく思っております。
さて、お教え頂いた方法を用いたところ、思った以上の効果を得る事ができ、大変感謝しております
実際に使ってみて思ったことは、VBAの処理速度と「softalk」の処理速度が違うので、VBAの方の
処理が直ぐに終わってしまい、「softalk」の方はバッファ処理されているようで、ちょっと
面白いなと感じました。
何はともあれ、懇切丁寧に教えて頂き感謝の限りです
どうもありがとう御座いました。
No.1
- 回答日時:
1.VisualbasicのSendKey命令は考慮されたのでしょうか?
2.「softalk」に戻って「録音」ボタンを押す操作は、キーボードだけでできるのですか?
3.マウス操作およびキーボード操作を自動化するソフトがいくつかありますが、そういうソフトではダメですか?
4.連番のテキストファイルの中身、というのは001,002,003とかでしょうか?
エクセルで連番を作成しておいて、各行に元ファイル名と作成ファイル名を書き出せませんか?以下のように・・・。
001 read001.sound write001.music
002 read002.sound write002.music
GW休暇が入ってしまい、返答遅れまして申し訳ありません。
「キーボード操作を自動化するソフト」というところは今まで発想がなかったので、ありがたい情報でした。
それをどう絡めて行くかということは今後の課題にしたいと思います。
正直、VBに詳しい訳ではないので半分ほども理解できていませんが、時間を掛けて
教えていただいた事を身につけていこうかと思っております。
この度はどうも有難う御座いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) 自動更新前のエクセルファイルは何処に? 1 2023/01/06 00:53
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpに関わる所での、form actio...
-
エクセルvbaでdocuworksprinter...
-
Visual Studio 2013
-
SaveAsの保存先について
-
パスワード保護されたExcelファ...
-
VS2012での\\(円マーク)とバッ...
-
秀丸マクロ ファイルのパス取得...
-
エクセルのマクロで特定フォル...
-
fopenでのパス指定
-
エクセルのVBAまたはVisualBasi...
-
VBAでパス名(2バイト文字)の...
-
ExcelVBAの使い方 ¥の使い方...
-
【VBA】複数のtxtファイルから...
-
A列に記載されているフォルダ...
-
エクセルの二重起動をやめたい
-
VB.NETで参照設定
-
Shell関数内で変数を使うことに...
-
バッチファイル 二つ上のディ...
-
VBSからのエクセル操作
-
初心者powershellのPS1ファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
バッチファイル 二つ上のディ...
-
Excel 相対パス
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
【VB.NET】App.configにファイ...
-
SaveAsの保存先について
-
ExcelVBAの使い方 ¥の使い方...
-
エクセルのマクロで特定フォル...
-
【VBA】ExcelマクロでCSVファイ...
-
EXCEL(VBA)で指定フォルダ内の...
-
VBA一覧取得 再投稿
-
指定したフォルダ内の最新ファ...
-
ExcelのVBAで上書き保存を確...
-
VBAでパワーシェルを実行したい...
-
VBA★PDFをPDFアプリで印刷し...
-
コマンドプロンプトのコピー関...
-
アプリケーションのインストー...
-
開いているファイルを削除し、...
-
A列に記載されているフォルダ...
おすすめ情報