may the VBA be with you

Excel VBAとか業務自動化とか

セル上の英文を読み上げてもらう

はじめに

ネタができたらVBAの記事書こうと思っていたら、なかなかに久々になりました。
ネタって自然と湧き出てくるわけではないんですね。

やりたいこと

Excelのセル上の英語テキストを読ませたい

背景

最近「英語物語」というアプリで自動読み上げがすごいなあと思い、
なんかAPIとか使えばVBAでも読み上げできるんじゃないかなと思ったから。

とりあえずやってみよう

まずはExcelの標準でできないかどうか、Google先生にお伺いをたてます。

Excel」「VBA」「読み上げ」「音声」などを組み合わせて検索。

さすがにできないだろと思うことも、とりあえず訊くが吉です。

セルの読み上げ機能

Excel でテキストを音声に変換する - Excel

こちらのページに「セルの読み上げ機能」というものがあり、「あれ? 終わった」と思いました。
が、これを実際に試してみると、なかなか面白いレベル。

昔の読み上げってこんな感じだったなあという。

Office TANAKA - Excel VBA Tips[テキストファイルを読み上げる]

VBAでもできるようです。

が、もう少しうまく読んでもらえるか調べてみましょう。

SAPI?

VocExcel / SAPI で読み上げ / エクセル マクロ

よくわかりませんが、SAPIというものを使う方法が書いてありました。

試しに

Sub 読み上げテスト()
  Dim Voice1
  
  Set Voice1 = CreateObject("SAPI.SpVoice")
  Set Voice1.Voice = Voice1.GetVoices().Item(0)
  Voice1.Speak "Hello world"
End Sub

上の方法と変わらない?

しかし「読み上げる人物が変る」という情報がありましたので
声のタイプを取得してみると

Sub 声タイプゲット()
  Dim Voice1
  Dim cnt As Long
  Dim i As Long
  
  Set Voice1 = CreateObject("SAPI.SpVoice")
  cnt = Voice1.GetVoices.Count
  For i = 0 To cnt - 1
    Set Voice1.Voice = Voice1.GetVoices().Item(i)
    Debug.Print Voice1.Voice.GetDescription()
  Next i
End Sub

実行すると、イミディエイトウインドウに

Microsoft Haruka Desktop - Japanese
Microsoft Zira Desktop - English (United States)

こんな感じで、表示されます。*1
Englishバージョンがある!
Ziraというのは名前でしょうか。

Voice1.GetVoices().Item(1)にして試したら、無事に英語っぽく読んでくれました。

ヤッタネ!!

選択セルを読んでもらう

ここまできたら、あとは簡単ですね。

Sub 読み上げ()
  Dim Voice1
  Dim cnt As Long
  Dim r As Range
  Dim str As String
  
  Set Voice1 = CreateObject("SAPI.SpVoice")
  Set Voice1.Voice = Voice1.GetVoices().Item(1)
  For Each r In Selection
    str = r.Value
    If str <> "" Then
      Voice1.Speak str
    End If
  Next
End Sub

クイックアクセスツールバーに追加

どうせなら、セルの読み上げ機能と同じように、クイックアクセスツールバーに追加したいところですね。

Excelマクロ/VBAで始める業務自動化プログラミング入門(1):Excelでプログラム作成を始めるメリットとマクロの基本 (3/5) - @IT

こちらにやり方が書いてあります。

f:id:vba-belle-equipe:20160813124044p:plain

アイコンや表示名は、変更ボタンから変えられます。

f:id:vba-belle-equipe:20160813124237p:plain

とりあえず再生アイコンにしてみました。


セルを選択 -> アイコン押す で、Ziraさんが英語を読み上げてくれます。

*1:Windows10。環境によって違うと思われます

楽天レンタル終了のお知らせ(泣)

楽天レンタルが9月末で終わってしまうらしいですね。


最近は、映画DVDやら何やらを借りる時にもっぱら楽天レンタルだったので、わりとショックです。


最近観た中で面白かった、恋はデジャ・ブ ↓
恋はデジャ・ブ [SPE BEST] [Blu-ray]


ほとんど毎週のように「旧作半額」とか「旧作0円」とかのクーポンを乱発してたので、大丈夫かいなと思ってたら大丈夫じゃなかったんですね。

やっぱり儲からないんでしょうか。


あまりに安くて便利で申し訳ないから、1回わざと延滞したりしたんですけど、もうちょっとやればよかったかなあと思ったり。
(本当はわざとじゃなくて、ただのうっかり)

パソコンとタブレットとまった

よくわからないんですが、電源を押しても反応がない。

ということが、パソコンとタブレットで立て続けに起こりました。
暑すぎるのが原因でしょうか。


というのを言い訳にして、一人で家にいるけどガンガンエアコンに頑張ってもらうか、カフェかどっかに行こうかなと考えています。



しかし、これからさらに暑くなりそうなのに今からこんなことで夏を乗り切れるのかなと考えたりして。



まあ、なんとかなるかなとも思ったりもします。

Life Is Strange 2周目終了

時間巻き戻し系ゲーム「Life Is Strange」の2周目プレイが終了しました。

vba-belle-equipe.hatenablog.com

2周目やったんねん、と言ってから意外とかかりました。

感想

2周目だから、なるべく1周目とは違う選択をして進めたわけですが、小さな違いでもいちいち台詞が変わっているのがすごかったっす。

awesome!!

若干ネタバレ

最後の選択に関して。

2周目で選択したラストのほうが、シーンとして作りこまれている感じがしたので、やっぱりこっちが本線なのかと思いました。


あ、あとダニエルをパーティーに出せたのが結構うれしかったです。


素敵スクリーンショット公開

Streamでプレイ中に[F12]を押すと、スクリーンショットが撮れるよ!

ということで、いくつか貼ってみます。

f:id:vba-belle-equipe:20160623181216j:plain

f:id:vba-belle-equipe:20160623181550j:plain

f:id:vba-belle-equipe:20160623181624j:plain

f:id:vba-belle-equipe:20160623181701j:plain

思いつき連載 VBA王子 ニューヨークへ行く #15

前回

vba-belle-equipe.hatenablog.com


登場人物

赤羽健太

主人公

王子友哉

赤羽の同期。営業のエース候補

川口瑞穂

赤羽の同期。広報課。

浮間船子

赤羽の先輩。

  • 甘いものが好き
  • 辛いものも好き
  • 食べ物は大体好き
蕨機絵

広報課第一係長。とても仕事ができる。

北浦和

おかっぱ頭。

#15

 赤羽はパソコンに向かって座っていた。
 テケトンテントンテントン。ぐにゃぐにゃした緑色のキーをタイプするたびに音が響く。
「よし、これでお前はもうVBAマスターだ」北浦が言う。
「赤羽君すごーい」川口瑞穂が言う。
「やられたぜ、ケンタ。お前こそ、本物のVBA王子だ」王子が言う。
「で、いつ王子君と飲むのよ。いつなのよ」浮間がスペアリブにくらいつきながら言う。
「え? そりゃそうでしょ、夢でしょ。え? なんでかって、そりゃ、キミが寝てるからでしょ。え? なんで寝てるかって? そんなこと知りませんよ」係長が言う。
 赤羽は空港を歩いていた。
 マクロを修正したら田舎に帰ってフィアンセと結婚すると言っていたスティーブ。
 俺はこんな小さい町で終わる人間じゃねえと言ってオハイオ州に旅立ったジャック。
 敵のうちは手強いと思ったけど味方になったら意外とあれだったマイク。
 ヴァネッサとずーっとUNOをしていた熱い夜。
 一歩一歩、ゲートへと進む。この街での思い出を胸に刻みつけながら・・・。
「アディオス、USA」
 そして、パスポートがないことに気づいた。探しても探しても、それは見つからない。

 赤羽は目を開けた。ひどく喉が渇いていた。
 台所で水を飲み、ふと時計を見ると夜中の3時。
 リビングに置きっぱなしになっているノートパソコンをじっと見つめる。
「明日も仕事なんだけどな」
 どうしても修正がうまくいかなかったマクロのことが頭に浮かび、回り始めていた。
 もしかしたら、こうすればうまくいくんじゃないだろうか。
 でも、いかないかもしれない。
 試すしかない。
 社内のシステムは持ち帰れないから、ここにない。故に、試すことはできない。
 できないのだから寝るべきだ。
 いや、似たようなものを作って試すことはできるかもしれない。
「あ、そうか」
 似たようなものを作る技術がないことに納得し、赤羽は布団に戻った。
 
 赤羽は荒くれものに取り囲まれていた。
「お前たち、その娘を離すんだ!」
「ほう、ずいぶんと威勢がいいことだ。この状況でそんなことが言えるとはな」
 おさげ頭の娘の赤いほっぺたをつんつんしながら、一人のおかっぱ頭が言う。
「そこまで言うなら、このマクロをなおしてみな!」
 飛んできたノートパソコンを赤羽は、バク転しながら両足でキャッチした。そして空中でキーを叩き、着地寸前に蹴り返す。
 おかっぱ頭は親指と人差し指でキャッチした。そして画面を見て、目を見開く。
「げ、げぇ~! 修正するだけじゃなくて、わかりやすくコメントがつけてあるだと! き、きさま何者だ!」
 赤羽は、ふっと笑うと、胸元に手を入れた。
「私、こういう・・・、あれ? こういう者・・・」
 名刺入れがないことに気づいた。探しても探しても、それは見つからない。
 
 午前中に、赤羽は想定したとおりの修正を完了させた。
「例のマクロ、修正できました」なるべく何でもないふうを装い、北浦に渡す。
「ほう、どれどれ」北浦は言い、マウスをカチカチとやった。
 赤羽はひとつ唾を飲み込み、北浦が操作するのを見守る。
 やがて、なるほどなるほど、と北浦はつぶやいた。「うん、ちゃんと動いてるな」
「・・・ですよね?」
「50点あげよう」
 赤羽の目は大きく見開き、それから、ちゃぶ台が近くにないかなと周囲に向けられた。
「少年よ、やってられるかこんなもん! と投げ出すのはまだ早いぞ。お前にはまだまだ、学ばねばならないことがある」
「出た、変なキャラ」
「どうだ、次なる奥義を学ぶ準備はできておるか」
「・・・大丈夫です」
 北浦はものものしくうなずいた。「えっと、それはどっちの大丈夫かな?」
 赤羽は、にっこりと笑った。
 





- 第1部 完 -