ホームへ戻る|Data Base 桐 User Board|過去ログ一覧|検索|プロパティ |ほっ! |
▼過去ログ No135 |
書き込み数 : 6750件 |
|
|
||||||||||||
> 確か、桐の表そっくりに色付けしてたと思いますけど。 > データベースとは全然関係ない部分なのでDAOではできないのかも? そういう関係ですかね? でも、それだけだともったいないようなぁ〜 Excel なしで Excel ファイルを作成できる方がメリットは大きいような? それと、Excel.Application を使う事のデメリットは、Excel が起動して いると、「Excel書き出し」は行えないという事と、連続して書き出すとき に、Excel が終了するのを待てないという、毎度毎度出てくる質問もある 問題はありますよね。・・・ |
|
|
||||||||||||
確か、桐の表そっくりに色付けしてたと思いますけど。 データベースとは全然関係ない部分なのでDAOではできないのかも? |
|
|
||||||||||||
何か、書き出しにおいては DAO では kthree の(ユーザの?)希望するような 要求に答えきれなくて、Excel.Application では、それが可能で、仕方なく 書き出しだけは Excel.Application を使うようにしたのかなぁ〜? だとしたら、それはいったい何? |
|
|
||||||||||||
桐は、読み込みにおいて DAO を使い、書き出しにおいては Excel.Application を遣っているという事は何回か書きましたが、どうして、このようになったので しょうかね? DAO は Windows 2000 以降、2000 / XP と OS 標準で持っていて、Excel の 導入とは関係なしに使えるわけですが、Excel.Application の方は Excel その ものですから Excel のインストール無しでは使えません。 で、折角、読み込みの方は DAO 使っているので、本来ならば Excel 無しで .XLS ファイルの読み込みは可能にしているわけです。それに対し、書き出しの 方は、わざわざ Excel を必要とする Excel.Application を使っているのです が、何故でしょうね!? 折角ならば、書き出しの方も DAO を使ってしまえば(今だと ADO 方が良いので しょうが)、Excel 無しで、読み込みも書き出しもできたでしょうに・・・ # まぁ〜、Excel のアドインについてはおまけで十分な範囲でしょう!!! :-) DAO を使った Excel ファイル作成の例 CreateXLS.VBS |
|
|
||||||||||||
<6741>の、 >>リストボックスって使ってないみたいですが。 >▼のスライドバーと連動し、どちらを動かしても反映するようになってます は、入力支援ボタンのドロップダウンリストの意味です 訂正させていただきます |
|
|
||||||||||||
>たゆーさん、なでしこ使ってますよね。それにタイムスタンプ変更機能があるようですが? >http://nadesi.com/doc/cmd-func.htm#623 情報ありがとうございます。またじっくり調べてみます ところで、 >#すごいなあ、なでしこ コメントの先頭文字ですが、桐では「*」ですよね。 しかし掲示板等で見かけるのは「#」が多いですね。これはいったいどうしてでしょうね VBSでは「'」(参考:<6714>)のような書き方もあるようです 私が強いて知ってる唯一の言語(BASIC)でも「'」を、コメントとして使用可能でした あと「REM」だったかな?も可能でした |
|
|
||||||||||||
>あえて、「グループボックス」でマウスイベントを使用しない場合は、 >チェックを外すと良いです。 今回は、グループボックスに「ソース値更新」を設定してましたので簡単には 修正できませんが、本当に必要ならそれぞれのオブジェクトの「マウスイベント」 あたりで対応すればいいということですね。了解いたしました と、書いた後、少し気になり「イベントを使用しない」に設定したところ 「ソース値更新」は残りました(????) つまり、「ソース値更新」は、マウスイベントの使用有無でなく利用できるようです これを知ってれば・・・・ |
|
|
||||||||||||
たゆーさん、なでしこ使ってますよね。それにタイムスタンプ変更機能があるようですが? http://nadesi.com/doc/cmd-func.htm#623 #すごいなあ、なでしこ |
|
|
||||||||||||
> この画像は現在グループボックスより前面(リストボックスでは下方)に > ありますが、画像の重なり順をフォーム上では背面へ(リストボックスでは > 上方)に移動すると、画像のクリックで選択できなくなってしまうようです これって、「グループボックス」の「イベント」で「マウスイベント」を 使用するにチェックが入っているので、「ピクチャ」より全面になっている と、「グループボックス」の「マウスイベント」の方を処理しようとして 「ピクチャ」の方の「マウス左ダウン」には処理がわたらないからでしょう。 あえて、「グループボックス」でマウスイベントを使用しない場合は、 チェックを外すと良いです。 # バッチファイル経由で VBS を実行しているのですか・・・ (^^; # 「シェル実行」コマンドって不便ですね! :-( |
|
|
||||||||||||
>け、けんじくん。。。 お気に召していただけましたか? >動かないというのはどんな現象でしょう。 イベントの件ですが「naoko」「kenji」を選択するのに 現在はグーループボックスの中の「○チェックボックス」「名前そのもの」の 他に画像をクリックしても変更されるように作成してあります この画像は現在グループボックスより前面(リストボックスでは下方)に ありますが、画像の重なり順をフォーム上では背面へ(リストボックスでは 上方)に移動すると、画像のクリックで選択できなくなってしまうようです ややこしい書き方をしましたが、意味が通じますでしょうか >リストボックスって使ってないみたいですが。 ▼のスライドバーと連動し、どちらを動かしても反映するようになってます |
|
|
||||||||||||
け、けんじくん。。。 複雑ですね〜。スライドバーを作ったんですね。 リストボックスって使ってないみたいですが。動かないというのはどんな現象でしょう。 |
|
|
||||||||||||
cygwinつうのはUNIXのコマンドをWindowsで使えるようにする環境です。 touchはまんま「触る」で、ファイルのタイムスタンプを変更するコマンドです。 内容を変更せずに「最終アクセス」「最終変更」日時を(片方でも両方でも)変えられまです。 vbsでtouchを作ったのがありますね。桐からならこれをいじれば使えるかも? http://www.vector.co.jp/soft/winnt/util/se310142.html |
|
|
||||||||||||
パソコンって、やはり使いこなすのは難しいですね (もしかして前にも書いたかも知れませんが。古〜いはなしです。) 某学校の校長をされてて定年退職されたかた(今はお亡くなりになってます)から、何度も メールをいただいたことがあります それまで、いろいろ質問のメールをお送りいただき、それなにり返事を書いたつもりですが 最終的に、こんな言葉をいただきました 「私は、約40年教壇に立ち授業の最後に、本日のところでわからない所はありませんか?と 聞いても、生徒からは質問はなし・・・とりあえず、今日の分は終了」と思った(思ってた) この校長先生とメールでお話をしているうちに、最後はこのように言葉が変わりました 「生徒が質問しないのは理解したからでなく、その日のの内容すら理解できなく、質問する ところがわからない?状態ではなかったのだろうか」 たぶん、そのときの私の説明が不十分だったとは思いますが、いまの私の教訓として受けとめて います 「桐質問掲示板」を開いて約3ヶ月。ぜんぜん井戸端BBSの代わりまでは行きませんが 質問をされるかたは、すばらしいと思っております 今後ともよろしくお願いいたします |
|
|
||||||||||||
subtitle>re:テキスト読み上げ/たゆー これは、決してコマーシャルではありませんが、 先日、「ほっ!」の53に設定変更をできるものを掲載しました・・・が このなかの「Naoko」さんと「Kenji」君(ピクチャーオブジェクトです) もちろん、アップした状態ではうまくイベントが動くのですがオブジェクトリストを 利用し上方(グループボックスの下・リストボックスの上?)へ移動するとうまく動きません どこかあとすこし設定ですむとおもうのですが。 ちなみに「Naoko」さんと「Kenji」君の画像は、私のイメージです |
|
|
||||||||||||
なるほど、わかりました。 なぜフォールダの日付が更新されたりそうでなかったり・・・・ 「NTFS」「FAT32」とかの関係があったのですね ps >GUIだと桐から使いにくいなあと思って、cygwinのtouchコマンドを使ってみたら こんなことばが理解できるようになりたい |
|
|
||||||||||||
Vectorに色々あるので、標準じゃできないのでしょうね。 GUIだと桐から使いにくいなあと思って、cygwinのtouchコマンドを使ってみたら フォルダのタイムスタンプ変更もあっさりできてしまいました^^; でもNTFSだと「中身が弄られれば、その時の時刻」になっちゃうのでやはりあまり意味なさそう。 FAT32だと中身の変更では維持されますが、これは「中身の変更はフォルダの変更とみなしてない」 からで、作成日を表示してるからではないのですね。 (touchでは作成日は変更されません) エクスプローラで表示を詳細にすると作成・最終アクセス・最終更新を表示できますね。 最終アクセスだけ「日時」なのにFAT32だと時刻は全部00:00だ^^; |
|
|
||||||||||||
>中身が弄られれば、その時の時刻でフォルダの更新時刻も更新 されてないマシンがあるので、?と思ったらFAT32でした。なるほど。 しかしNTFSでもフォルダのプロパティで「作成日時」と表示されてるのは、変ですね。 DIRコマンドのオプションでこんなのがあるので、作成と更新は別に管理されてるようです。 Win2kのFAT32でも区別されてます。 それなら作成日を変えられてもよさそうな。 /T どのタイムフィールドを表示するか、または並べ替えに使用するかを 指定します。 タイムフィールド C 作成 A 最終アクセス W 最終更新 |
|
|
||||||||||||
下のは私です! (^^; |
|
|
||||||||||||
> フォルダの時間は、複写処理時間になるようです フォルダの時刻の複製は基本的に無理です。 無理矢理やろうとすれば、OS の日付を一時的に 複写したい時刻に変更した上で、複写(フォルダの 複製)を行う方法がありますが、ファイルシステムが NTFS の場合は、デフォルトの設定として、フォルダの 中身が弄られれば、その時の時刻でフォルダの更新時刻 も更新されます。 なので、面倒な事をして時刻を複製しても直ぐに希望の 時刻から変更させられる場合が多いです。 なお、このフォルダの中を弄られた場合のフォルダの更新 時刻が変化しないようにレジストリで設定変更できたと 思いますが、基本的には OS デフォルトの設定で使われた 方がよろしいかと思います。 まら、ファイル管理ツールでフォルダの時刻を変更できる ものがありますが、これもパソコンの時刻を一時的に変更 してフォルダを操作しているものが(でないとNT系列では 無理(NTFS系))多いようです。でも、これも先に書いたよう に中身を弄ると直ぐに変わってしまいますので、それほど 意味のあるものではありません。 私の場合、CR-R に焼くときにフォルダの時刻を統一して 焼きたい場合は、そうしていますけれど! (^^; |
|
|
||||||||||||
フォルダは複製というのはなくて同じ名前で作っているだけなので現在日時になるんですよね? DOSでいえばCOPYではファイルしか複写できず、MDというのが必要で。。。 XCOPYつうのもありましたがディレクトリは「作成」されますね。 システムの時間を変更するのが一番簡単そう^^; |
|
|
||||||||||||
ちなみに、桐のコマンドでできれば最高ですが エクスプローラ等標準の操作でもかまいません よろしくお願いいたします |
|
|
||||||||||||
ファイルの複写で新しくできたファイルのタイムスタンプについてですが ルールをご存知ないでしょうか? 複写元にあって、複写先にない場合、新しくできるファイルの日付は 複写元のファイルのタイムスタンプになるようです(これも、さだかでないです)が フォルダの時間は、複写処理時間になるようです これを、複写元と同じタイムスタンプで複写できないでしょうか? とりあえず、全複写後、再度上書き複写とか・・・・ |
|
|
||||||||||||
もし、私が書いたスクリプトを XP + Office 2002 もしくは 2003 の 環境だけでなく、Windows 2000 でも動かしたければ、下記から SAPI 5.1SKD をダウンロードし、Office の日本語音声合成エンジンと組み 合わせればそのまま使えるかな? (あるいは 98 も) http://www.microsoft.com/speech/download/sdk51/ http://www.microsoft.com/downloads/details.aspx?familyid=5E86EC97-40A7-453F-B0EE-6583171B4530&displaylang=en 必要なのは SpeechSDK51.exe [69606 KB]の方(だけ)です。 SpeechSDK51LangPack.exe [83492 KB]の LangPack に惑わされて しまいますが、これに入っているのは日本語と中国語の音声認識 エンジンだけであり、音声合成エンジンは含まれていません。 (;_;) と言う事で、Office の日本語合成エンジンを持っていない人は Agent + TTS の古いバージョンを使うしかない。 Office の 2002 以降を持っている人は XP であれば、そのまま OS 標準の機能を、それ以外の OS の人は SpeechSDK51 を入れて 使う方法もあるのかな!? と一応、まとめて書いておこう。 (^^; # .NET の新しい SpeechSKD と言うのも出ているようだけれど # まだβ版のようですね! それにやけに大きいしファイルが多い。 :-) |
|
|
||||||||||||
>>もちろん、サポート対象外でしょうけれど >そういうのもあるでしょうね 御意です。(^^v <蛇足> 変な話ですが、私は日系二世のおフランス人であるにもかかわらず(これはウソですよ)、 フランス式の庭園よりも、 イギリス式の庭園のほうが自分の好みに合うのですよね。(^^ゞ |
|
|
||||||||||||
>もちろん、サポート対象外でしょうけれど そういうのもあるでしょうね しかし、私は「タブメニュー」や「桐V9」で「*.gif」表示等、1年以上使用していますが 大きな問題はないですね しかし、「サポート対象外」の機能を利用した作品までは、みなさんに紹介できませんが |
|
|
||||||||||||
「どんな場合でも使える」というわけではないが、使い方によってはいろいろ 楽しめるかも知れない 例えば「メッセージボックス」・・・なんてあるが 音声ボックス,発生文字列,音声=男性,スピード=ややはやく・・・ なんて、楽しみですね |
|
|
||||||||||||
>>桐V9で追加・変更されたプロパティ >との事ですが、以下の方法を利用すると「桐V8」でも、「ステータスバー」の非表示が >できるかも知れない・・・が、試していません 以前偶然発見したのですが、何というプロパティ名かは失念しましたが… 桐ver.8 でも、後期のSPの場合には、 桐ver.9 のプロパティ名が登録されていることが確かにありますね。 もちろん、サポート対象外でしょうけれど… |
|
|
||||||||||||
桐質問掲示板に「フォームのステータスバーを消すには 」という質問がでていました すでにONnojiさんがお答え紹介されてますが、別の方法で探してみました ちょっとファイルの中を(バイナリで)見た結果ですが テストの方法は ・「暦.wfm」のオリジナルを複写 ・いったん定義で開き「オーバラップ」を「チャイルド」に変更 ・編集モードで、「ステータスバー」が表示されるのを確認 ・再度定義で 「チャイルド」を「オーバラップ」にもどす この状態で編集モードで開く ・これが従来の「オーバラップ」状態で、「ステータスバー」が表示されることになる >桐V9で追加・変更されたプロパティ との事ですが、以下の方法を利用すると「桐V8」でも、「ステータスバー」の非表示が できるかも知れない・・・が、試していません もちろんアドレス自体も・・・ ○さて、リストを見ると数行の変更箇所があります 変更内容には更新日やその他もあります。・・・が、少し気になったのは 他とは少し番地の離れた >000024DB : 01 00 000024DB : 01 00 です ためしに、ここを変更したら、質問の通りの結果になります ただし、これは、私の環境でファイルも「暦.wfm」と限定し、 上記条件で行った結果ですから、試さないでください |
|
|
||||||||||||
「FILENAME 暦.wfm」の変更前と変更後 [1回目] [2回目] ---------------- ----------------- 00000002 : 00 14 00000002 : 00 14 00000004 : 00 02 00000004 : 00 02 00000005 : 00 24 00000005 : 00 24 00000006 : 00 F8 00000006 : 00 F8 00000007 : 00 77 00000007 : 00 77 00000008 : 04 20 00000008 : 04 20 00000009 : 00 55 00000009 : 00 55 0000000A : 00 F7 0000000A : 00 F7 0000000B : 00 77 0000000B : 00 77 0000000C : 8C FF 0000000C : 8C FF 0000000D : A6 FF 0000000D : A6 FF 0000000E : 69 FF 0000000E : 69 FF 0000000F : 00 FF 0000000F : 00 FF 00000010 : 00 F5 00000010 : 00 F5 00000011 : 00 16 00000011 : 00 16 00000012 : 00 F5 00000012 : 00 F5 00000013 : 00 77 00000013 : 00 77 00000014 : 2B 0F 00000014 : 2B 0F 00000015 : 00 2E 00000015 : 00 2E 00000016 : 00 F5 00000016 : 00 F5 00000017 : 00 77 00000017 : 00 77 00000018 : 01 0B 00000018 : 01 0B 00000019 : E8 18 00000019 : E8 18 0000001A : 00 F5 0000001A : 00 F5 0000001B : 00 77 0000001B : 00 77 0000001C : DC 00 0000001C : DC 00 0000001D : CE 00 0000001D : CE 00 0000001E : 14 00 0000001E : 14 00 00000020 : 81 03 00000020 : 81 03 00000021 : 1B 00 00000021 : 1B 00 00000022 : B1 00 00000022 : B1 00 00000023 : 6A 00 00000023 : 6A 00 00000024 : CD B2 00000024 : CD B2 00000025 : AB 8E 00000025 : AB 8E 00000026 : BA CF 00000026 : BA CF 00000027 : DC 77 00000027 : DC 77 00000028 : 00 01 00000028 : 00 01 0000002C : B8 EE 0000002C : B8 EE 0000002D : CB 04 0000002D : CB 04 0000002E : 14 49 0000002E : 14 49 0000005C : 14 42 0000005C : 14 42 0000005D : 00 3B 0000005D : 00 3B 0000005E : 00 CF 0000005E : 00 CF 0000005F : 00 77 0000005F : 00 77 00000060 : 8C 06 00000060 : 8C 06 00000061 : A6 00 00000061 : A6 00 00000062 : 69 00 00000062 : 69 00 00000064 : 00 81 00000064 : 00 81 00000065 : 00 1B 00000065 : 00 1B 00000066 : 00 B1 00000066 : 00 B1 00000067 : 00 6A 00000067 : 00 6A 00000088 : 00 10 00000088 : 00 10 00000090 : 01 00 00000090 : 01 00 00000094 : 00 BC 00000094 : 00 BC 00000095 : 00 CB 00000095 : 00 CB 00000096 : 00 14 00000096 : 00 14 00000098 : 00 19 00000098 : 00 19 00000099 : 00 74 00000099 : 00 74 0000009A : 00 CF 0000009A : 00 CF 0000009B : 00 77 0000009B : 00 77 000000A3 : 35 32 000000A3 : 35 32 000000A5 : 30 32 000000A5 : 30 32 000000A7 : 39 32 000000A7 : 39 32 000000A9 : E5 FF 000000A9 : E5 FF 000000BA : D5 D2 000000BA : D5 D2 000000BC : 0A 0C 000000BC : 0A 0C 000000BE : 13 0C 000000BE : 13 0C 000000C0 : 14 15 000000C0 : 14 15 000000C2 : 2F 1C 000000C2 : 3A 1C 000000C4 : 06 0B 000000C4 : 22 0B 000000C6 : 61 85 000000C6 : 90 85 000000C7 : 02 01 000000C7 : 02 01 00002006 : BD 00 00002006 : BD 00 00002007 : 77 00 00002007 : 77 00 00002008 : 00 FF 00002008 : 00 FF 00002009 : 00 FF 00002009 : 00 FF 000024DB : 01 00 000024DB : 01 00 |
|
|
||||||||||||
> reporterは、ちゃんとキャラクタが出てきます。 そうなのですか・・・ VBScript でも、なんか呼び出すための API(手法) とか 無いのですかね? あえてやろうとすれば HTA の方を利用すれば良さそう ですが!? さすがに私自身はそこまで試す興味までは持てませんで した。 _o_ |
|
|
||||||||||||
reporterは、ちゃんとキャラクタが出てきます。常時表示としゃべるときだけ表示が選べます。 キャラクタを4種類全部入れてみたけど、同じ声(Kenji?)^^; 声を変える設定は見当りません。 たゆーさんが「無理みたいです」と言っているのは、どのマシンでも動くようにしたい ということなんでしょうかね? |
|
|
||||||||||||
>>that these text-to-speech engines are licensed only for use in Microsoft Agent >>enabled applications and Web pages with a visibly displayed Microsoft Agent >>character. >と書いてあるのでAgentのキャラクタが出てこないSpeech.vbsのような使い方はまずそう >ですが。 なるほど・・・ 私は、これらのファイルは一応はダウンロードしてみたのですが タイムスタンプがあまりに昔のものだったので、インストールは 行わずに削除してしまいました。 :-p だから、古い Agent や TTS 、それに SAPI4.0 は試してもいな いのですが、これらをダウンロードして使うと書いてあるフリー のスピーチソフトは Agentのキャラクタが必ず出てくるような 作りにしてあるのですか? それも、何か・・・ (^^; 私の場合は、今まで書いたスクリプトもそうですが、もし使う 場面があったとしても、2つも使い分けるのは面倒そうなので、 XP 標準の機能と Office の日本語エンジンを使いたいと思い ます。 (^^; |
|
|
||||||||||||
なるほど。regsvr32したら確かに吉岡さんのvbsではちゃんと女声でしゃべりました。 TTs.vbxでNaokoとKenjiがいてSamがいません。 コンパネの音声認識の方(SAPI5.0?)はSamしかいない。 新旧混在でいや〜んな状態になってるようです?_? このNaokoらはどこにいたんだろう? http://www.microsoft.com/msagent/downloads/user.asp からインストールしたL&Hの日本語エンジンだとすると、 >that these text-to-speech engines are licensed only for use in Microsoft Agent >enabled applications and Web pages with a visibly displayed Microsoft Agent >character. と書いてあるのでAgentのキャラクタが出てこないSpeech.vbsのような使い方はまずそうですが。 |
|
|
||||||||||||
XP の標準の機能(SAPI5.0)を使うか、それ以前の Agent や TTS を使うかで、どの COM を使うか VBScript も異なって くるわけですが、古いのを使う場合は、そこには VText.DLL があるはずなんで、そこで regsvr32 VText.DLL して登録 してしまえば、 CreateObject("TextToSpeech.TextToSpeech.1") なり CreateObject("TextToSpeech.TextToSpeech") で使えるようになるはずだけれど・・・ 詳しくは吉岡照雄さんの Speech.TXT を見れば書いてあり ます。 XP の新しいのと、msagentサイトからダウンロードできる 古いのの混在も可能ではあるようです。 > Samは入ってるのにね。日本語版WindowsXPなんだからSamなんていらないのに。 > 国際化の際のパッケージミスじゃないかな:-P バージョン間の非互換性とかも面倒だし・・・ 日本語版なのだから、最初から日本語対応のエンジンを 入れてくれれば良かったのに! ホントに (-_-; |
|
|
||||||||||||
サンプル試して見ましたが、うちの自作デスクトップでもだめでした。 エラーの意味がわかりませんが、<6714>で試すと「Naokoさんがいません」なので Officeが入ってないからでしょう。 Samは入ってるのにね。日本語版WindowsXPなんだからSamなんていらないのに。 国際化の際のパッケージミスじゃないかな:-P msagentは入れたのでreporterは日本語をしゃべってます。 |
|
|
||||||||||||
先日来いろいろ考えた(自分なりのテスト)結果・・・ですが やはり無理みたいです とりあえず、hedetakeさん紹介<6710>の >次にテキストファイルを読み上げるスクリプト。 >コマンドラインで起動オプションとしてファイル名を >指定しても良いし、ドラッグドロップでテキスト >ファイルをドロップしても良いです。 を、桐化してみました 「ほっ!」に、サンプルとしてあげておきます もしよろしかったら・・・・・ |
|
|
||||||||||||
若干のエラー処理などを入れたものです。 Text の受け渡しなどは処理によって変更するとして・・・ 音量やスピードレートの変更は Text に埋め込んでも 構いませんし! '-------------------------------------------------------------------------------- Option Explicit Dim Text, Arg Text = "" For Each Arg In WScript.Arguments Text = Text & Arg & vbCRLF Next If Text = "" Then Text = "コマンドラインオプションを指定して下さい。" Dim Fs, File Set Fs = CreateObject("Scripting.FileSystemObject") File = "KillVoice.txt" ' 中断処理のためのフラグファイルを指定 Dim Speech, Talker On Error Resume Next Set Speech = CreateObject("SAPI.SpVoice") If Err then Err.Clear:Msgbox "SAPIがインストールされていません!!!":WScript.Quit Talker = "LH Naoko" ' Talker = Microsoft Sam / LH Kenji / LH Naoko If Speech.GetVoices.Count > 0 Then Dim i For i = 0 To Speech.GetVoices().Count If Speech.GetVoices.Item(i).GetDescription = Talker Then Set Speech.Voice = Speech.GetVoices.Item(i) Exit For End If Next Else Msgbox "このパソコンには音声合成ファイルがインストールされていません!!!" WScript.Quit End If If Speech.Voice.GetDescription <> Talker Then Msgbox "このパソコンには指定された日本語の話せる " & _ vbCRLF & _ Talker & _ " さんがインストールされていません!!!" WScript.Quit End If Speech.Rate = 0 ' -10 〜 +10 Speech.Volume = 100 ' 0 〜 100 Speech.Speak Text, 3 Do If Fs.FileExists(File) Then Speech.Speak "", 2 Fs.DeleteFile File, True End If Loop Until Speech.WaitUntilDone(10) WScript.Quit ' Enum SpeechVoiceSpeakFlags ' 'SpVoice flags ' SVSFDefault = 0 ' SVSFlagsAsync = 1 ' SVSFPurgeBeforeSpeak = 2 ' SVSFIsFilename = 4 ' SVSFIsXML = 8 ' SVSFIsNotXML = 16 ' SVSFPersistXML = 32 ' ' 'Normalizer flags ' SVSFNLPSpeakPunc = 64 ' ' 'Masks ' SVSFNLPMask = 64 ' SVSFVoiceMask = 127 ' SVSFUnusedFlags = -128 ' End Enum '-------------------------------------------------------------------------------- |
|
|
||||||||||||
うっ! Set Status = Speech.Status の行は不要だ・・・ Status では非同期で実行した場合の状態は正しく 取得できないみたい! (;_;) と言う事で WaitUntilDone で読み上げ終了を 待ちながら、ファイルの存在をチェックする! |
|
|
||||||||||||
KillVoice.txt が存在したら読み上げを中止するスクリプト! 途中で KillVoice.txt が作成されても中断します。 中断したら KillVoice.txt は削除します。 ----------------------------------------------------- Set Fs = CreateObject("Scripting.FileSystemObject") File="KillVoice.txt" Text = _ "クリップボードのテキストを読み上げる VBScript" & _ "クリップボードの操作には前に書いたともうけれど" & _ "AutoItX を使っています。" & _ "クリップボードに適当なテキストをコピーした上で" & _ "実行して下さい。" Set Speech = CreateObject("SAPI.SpVoice") Set Speech.Voice = Speech.GetVoices().Item(1) Set Status = Speech.Status Speech.Rate = 0 ' -10 〜 +10 Speech.Volume = 100 ' 0 〜 100 Speech.Speak Text,3 Do If Fs.FileExists(File) Then Speech.Speak "",2 Fs.DeleteFile File End If Loop Until Speech.WaitUntilDone(10) WScript.Quit ----------------------------------------------------- |
|
|
||||||||||||
うっ、hidetakeさんの好奇心に火をつけてしまったみたい。 久しぶりに、hidetakeさんの連続書き込みをみてしまった。(懐かしひ) 私も後でゆっくりと勉強させていただきます。 たこすぱげてぃ |
|
|
||||||||||||
折角だから・・・ クリップボードのテキストを読み上げる VBScript クリップボードの操作には前に書いたともうけれど AutoItX を使っています。 クリップボードに適当なテキストをコピーした上で 実行して下さい。 ----------------------------------------------------- Set oAutoIt = CreateObject("AutoItX.Control") Text = oAutoIt.ClipGet Set Speech = CreateObject("SAPI.SpVoice") Set Speech.Voice = Speech.GetVoices().Item(1) Speech.Rate = -10 ' -10 〜 +10 Speech.Volume = 100 ' 0 〜 100 Speech.Speak Text ----------------------------------------------------- 次にテキストファイルを読み上げるスクリプト。 コマンドラインで起動オプションとしてファイル名を 指定しても良いし、ドラッグドロップでテキスト ファイルをドロップしても良いです。 ----------------------------------------------------- Set arg = WScript.Arguments If Arg.Count < 1 Then WScript.Quit End If Set fs = CreateObject("Scripting.FileSystemObject") Set txt = fs.OpenTextFile(arg(0)) Text = txt.ReadAll txt.Close Set Speech = CreateObject("SAPI.SpVoice") Set Speech.Voice = Speech.GetVoices().Item(1) Speech.Rate = -10 ' -10 〜 +10 Speech.Volume = 100 ' 0 〜 100 Speech.Speak Text ----------------------------------------------------- 細かいエラー処理などは省略してあります。後は作り方 さえだけで、結構遊べると・・・ |
|
|
||||||||||||
いまの気持ち 「ここを10mくらい歩けば目的地に到着しますよ」 と、教われて、歩きました。結果目的地に着いたのですが 結果は、ビルの7階くらいに貼ってある綱渡たりをした直後の気分で、 もちろん後もどりもできないし、周りは曇りで見えなくてとりあえず 「とにかく行って見るか」という気分です きちんと、希望通りに動いたのですが、まだ疑問だらけです いったいなにがあったのだろう? |
|
|
||||||||||||
ご報告です >CreateObject("SAPI.SpVoice").Speak "こんにちは" > >と言う、1行のテキストファイルを speek.vbs と言うファイル名で >作成し、それをダブルクリックなりコマンドラインから実行すれば >読み上げてくれると思いますよ! 出ました!! 先ほどコントロールパネルで、初期設定から「Naoko」に変更しましたので Naokoさんの声で「こんにちは」と聞こえました 感激ですね。 何事も、第一歩がなければ前には進まないと思います。 これをきっかけに桐のファイルを読み上げてくれたり・・・ 考えただけで感激です また、「speech.zip」をダウンロードし、テストした結果「SpeechXP.VBS」は なにか音声(言葉)を出しました。他はエラーです ダウンロードしたファイルは ><6699> Re:テキスト読み上げ・・・の >吉岡 照雄さんのところから拝借したが >http://www.vector.co.jp/vpack/browse/person/an010222.html・・・でなく >http://www.vector.co.jp/soft/winnt/util/se329712.html こちらのほうです これからが楽しみです |
|
|
||||||||||||
> きっとテキストファイルで何かの拡張子で保存して、きっとなにかすれば > 音声が・・・と たゆーさんのパソコンでは Excel の音声読み上げができるようなので CreateObject("SAPI.SpVoice").Speak "こんにちは" と言う、1行のテキストファイルを speek.vbs と言うファイル名で 作成し、それをダブルクリックなりコマンドラインから実行すれば 読み上げてくれると思いますよ! (コンパネで Sam 以外を指定してある場合) あとは Option Explicit Dim Text, Speech, Voice Text="こんにちは" Set Speech = CreateObject("SAPI.SpVoice") Set Speech.Voice = Speech.GetVoices().Item(1) Speech.Rate = -10 ' -10 〜 +10 Speech.Volume = 100 ' 0 〜 100 Speech.Speak Text とかもテキストファイルで適当な名前+ .vbs の拡張子をつけて保存し Text="・・・"の欄に読み上げさせたい文章を入れれば読み上げてくれます。 あとは、コマンドラインからの引数を利用したい場合は 吉岡 照雄さんの SpeechXP.VBS を利用して SpeechXP.VBS (一部改変) と言ったスクリプトを利用すればコマンドラインオプションから 自由に読み上げさせたい文章を指定できます。 |
|
|
||||||||||||
掲示板を拝見して・・・・て、という書き方は変かも知れませんが hidetakeさんの手にかかったらなんでも自由自在に操られるのだなと、 あらためて驚いています が、私の場合、まず最初に、hidetakeさんご紹介の >Microsoft Speech SDK Version 5.1 >http://msdn.microsoft.com/library/default.asp?url=/library/en-us/SAPI51sr/html/VB_SpVoice_Interface.asp クリックしたとたん私には無理かと感じました (横文字は見たとたんアレルギー症状です・・・なさけない) 他にも、<6694>〜の紹介文は私にはかなり難しそうです しかし私もこれには興味がありますので勉強したいと思います 不明な点は改めて質問させていただきますがよろしくお願いいたします ちなみに、エクセルで「セルの音声読み上げ」や コントロールパネルで >Item(0) LH Naoko >Item(0) LH Kenji >Item(0) Sam の、切り替え程度くらいはわかります しかし、私には、最初にかかれてました > <6694> Re:テキスト読み上げ >Winodws XP だと VBScript で >CreateObject("SAPI.SpVoice").Speak "Hello!!!" すら・・・悲しい きっとテキストファイルで何かの拡張子で保存して、きっとなにかすれば 音声が・・・と |
|
|
||||||||||||
ついでに > Dim Text, Speech, Voice > Text="<volume level='100'><rate speed='-10'>こんにちは</rate></volume>" _ > &"<volume level='100'><rate speed='+10'>こんにちは</rate></volume>" > Set Speech = CreateObject("SAPI.SpVoice") > Set Speech.Voice = Speech.GetVoices().Item(0) > Speech.Speak Text,8 は、Speech.Speak Text,16 と SVSFIsNotXML を指定してやれば 流すテキストにタグが含まれていようと、そのまま音声出力して くれる。それ以外はタグを解釈して制御してくれる SVSFIsXML = 8 と一緒となるようだ。すなわちデフォルトは XML フォーマット としてテキストを解釈して制御される。 |
|
|
||||||||||||
> Text="<volume level='100'><rate speed='-10'>こんにちは</rate></volume>" _ > &"<volume level='100'><rate speed='+10'>こんにちは</rate></volume>" スピードと音量の制御は、途中での設定変更がある場合は 上記、タグを埋め込んだテキストの方が自由に制御できる けど、全体の設定だと、次の方が簡単ではありますね! Option Explicit |
|
|
||||||||||||
「桐」もエクセルのインストールを前提とした機能も ある事だし、Office 入れて「音声」機能がインストール されていたら、これを利用して「音声読み上げ機能」を (制御も含む)次のバージョンの「桐」で持たせるのも おもしろしろいでしょうし、結構役に立つかも知れない!!! |
|
|
||||||||||||
音声読み上げを途中で強制終了する方法を考えてみたけれど 通常は内部で作り込んで Resume() なり Pause() なりするの だろうけど、外部からとなると、全く別のスクリプトでこれ らを実行したところで、既に別のタスクで動いている SAPI には影響しないようである。 (別の音声読み上げを実行しようとするとエラーにはなる) と言う事で、内部で作り込むとなると結構面倒だろうし 「桐」からの制御の範疇を随分超えてしまいそうだ。 もしやろうとすると、現在読み上げている VBScript 自体を kill してしまうと、音声読み上げも当然止まる。 まぁ〜これをやろうとしても「桐」は自分がシステムなり シェル実行したプロセスIDすら知る方法も提供していないので 桐からターゲットをちゃんとめがけて強制終了させる方法は ない! (-_-; 無理矢理やろうとすると wscript.exe なり csript.exe なり VBScript 全部を終了させようとするとそれは可能だろ・・・ あるいは、桐からは終了のフラグファイルでも投げかけて それを VBScript が監視していて、それによって途中終了って 言う方法もあるだろう・・・ でも、そこまでは私には必要なさそうなので、これぐらいに して止めておきます。 (^^; Microsoft Speech SDK Version 5.1 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/SAPI51sr/html/VB_SpVoice_Interface.asp # なお、SAPI 4.0 と 5.x では互換性無し! # 5.0 と 5.1 では若干の違いがあるそうですけれど # 5.1 には日本語のエンジンが(MSには)無いので意味無し # と言う事で、上記 SDK の記述はバージョンの違いを # 十分に注意しながら参照の必要がある。 :-) |
|
|
||||||||||||
Dim Text, Speech, Voice Text="<volume level='100'><rate speed='-10'>こんにちは</rate></volume>" _ &"<volume level='100'><rate speed='+10'>こんにちは</rate></volume>" Set Speech = CreateObject("SAPI.SpVoice") Set Speech.Voice = Speech.GetVoices().Item(0) Speech.Speak Text,8 音量やスピードは上記のようにして設定可能なようです。 最後のしゃべらすオプションの 8 の指定で XML フォー マットのデータだと指定するはずだけれど、VBSript からだと無指定でもそのまま有効だ! ・・・ (^^; |
|
Copyright (C) 2000 CGI Arkadia All rights reserved. Script written by Shintaro Wakayama. BBS-TypeN Ver.2 Preview4 remodel advice by hidetake |