Excelでコメントに画像を追加するマクロ

タイトル通りExcelネタ。最近こればっかりだな。

以下の画像の様に、Excelのセルに画像のコメント追加するマクロを作成したので今回はそのエントリー。
Excel_commentadd_image



ネットで「Excel コメント 画像」って検索すればやり方自体はすぐわかると思う。
NEC LAVIE公式サイト > サービス&サポート > Q&A > 情報番号 012825



手順としては
「コメントの挿入」
→コメント枠の境界線を右クリック、「コメントの書式設定」
→「色と線」タブをクリック、「塗りつぶし」欄から「色」の▼をクリック、「塗りつぶし効果」をクリック。
→「図」タブをクリック、「図の選択」ボタンをクリック。
→コメントに表示する図を選択(クリック)、「挿入」ボタンをクリック。
→「OK」ボタンをクリック。


いやいや、手数が多すぎるし、コメント枠の境界線クリックが地味にシビア。
個人的には必要な時に画像がパッと表示されて便利な機能と思っているが、周りで使う人は皆無。
使う人おらんからなのか、面倒だから使わないのか?にわとり卵理論なやつ。
そもそもフォントにしろ、背景にしろデフォルトの設定がダサダサでMicrosoftが力入れていない感がすごい。


本題からそれたが、それならマクロでワンクリックで実行できるようにしてやった。
考え方はコメントにしても、オートシェイプ?図形と同じで.Comment.Shape.Selectで選択状態にして、.ShapeRange.Fillで画像を埋め込む。
以下がそのコード。

Sub test()

  Dim Pic
  Dim TTL, PicType

    With ActiveCell
        .ClearComments
        .AddComment
        .Comment.Visible = True
        .Comment.Shape.Select True
    End With

    TTL = "挿入する画像を選択"
    PicType = "画像ファイル,*.jpg;*.bmp;*.png;*.gif," & _
            "jpgファイル,*.jpg,bmpファイル,*.bmp,pngファイル," & _
            "*.png,gifファイル,*.gif"
    Pic = Application.GetOpenFilename(PicType, , _
                                "挿入する画像を選択", , False)
  On Error GoTo Er
  
Selection.ShapeRange.Fill.UserPicture Pic

Er: On Error GoTo 0

    ActiveCell.Comment.Visible = False

End Sub

ところどころyahoo知恵袋さんに教えて頂きました。ありがとうございます。
マクロ記録で記録できない内容をどう書くか、少しずつではあるけどわかってきた。
まだまだ調べながらだが、やりたいことができるようになってきて嬉しい。

追記 2020/06/28
私のExcel師匠の田中先生のサイトoffice TANAKAにすでに記事があった。
しかも画像サイズに関する修正も含めた上位互換。


以上

Excelでマクロ記録できないコマンドにショートカットキーを割り当てる

先日の以下の記事でも書いたけど、最近excelの自作ショートカット作成に凝っている。
atz.hatenadiary.com

登録したいコマンドをマクロ記録しては、その内容をアドインファイルに追記する作業をしていた。
ところが一部マクロ記録できないコマンドが出てきた。
具体的には「オブジェクトの選択」「横書きテキストボックス ボックスの描画」等である。

使用頻度の低いコマンドであれば無視できるが、普段の業務で使うし是非ともショートカットキーを割り当てたい。。

そこでまず試したのが、sendkeysでAltキー+複数キーを送る方法。
結論から言うとこの方法はNG。sendkeysがそもそも動作が安定しないらしい。
「オブジェクトの選択」であれば、以下のようなコードを書いた。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub select()
 SendKeys "%", True
 Sleep (1000)
 SendKeys "HFDO", True
End Sub

マクロ実行前に事前にaltキー→escキーを押しておくと問題ないのだが、事前処理なしに実行すると単純にセルに"HFDO"が入力される。
原因は不明のまま。


そこで次にトライしたのが、CommandBarsオブジェクトのExecuteMsoメソッドを使う方法。
sendkeysよりも簡単かつ、確実なためこちらが正解。
マクロも以下の通りシンプル。

Sub ObjectsSelect()
Application.CommandBars.ExecuteMso "ObjectsSelect"
End Sub

ここで"ObjectsSelect"がコントロールIDでこれにより「オブジェクトの選択」ボタンをクリックしたとき同じ操作が可能となる。
詳細は以下のドキュメントを参照
docs.microsoft.com


なお各コマンドのコントロールIDの確認方法は以下のブログを参考にさせていただいた。
マクロで実行したいコマンドのIDを調べる簡単な方法 | 初心者備忘録

ジョリージャンパーとその特許を読む週末

ルフロに続き特許を読んでみた第二弾はベビー用品のジョリージャンパー。
前回のルフロの記事は以下
atz.hatenadiary.com


はあちゅうさんが紹介したこで最近話題になっていたので、我が家でも導入してみたが、、、
残念ながら我が子には、はまらなかったのかも、乗せてみてもすぐ泣き出してしまう。
どこもレンタルが在庫切れで、ちょっと高い買い物だったのに。

そんなジョリージャンパーですが、1910年頃カナダのOlivia Pooleが我が子の為にオムツで手作りしたことがきっかけ。
1959年に「BABY SUPPORTER AND EXERCISER」という名称で権利化されています。
www.ic.gc.ca


まずはその第一クレームは
伸びない素材のフロントパネルとバックパネル、
及びストレッチ素材のサイドパネルを含むウェストバンド、
フロントパネルとバックパネルとをつなぐクロッチバンド(股部分)、
フロントパネルとバックパネルから上に伸びるストラップ
スプレッダーと呼ばれるストラップを広げる部材、
上部に接続される弾性のあるサスペンダー
※一部省略

本文には実施形態としてチェーンで高さ調整することや、サスペンダーにバネを使うことなど記載されている。
当時からほとんど原型をとどめている。これは商品化された後、権利化されたためかと。
だけど一般的に商品化後は公知の技術として権利化できないのでは?と思うが、今と事情が違うのかも。
そのあたり専門家ではないのでわからない。

また一方で、当時はプラスチック製品が一般的ではないことも実施形態から読み取れた。
このあたりは今に至る中でマイナーチェンジされたとこと思う。

時代を超えて愛されるジョリージャンパーを一度試してみてはいかがでしょう(まずはレンタルがおすすめ)

チャンネルポンをスマートスピーカーで再現

有り余る自宅時間をスマートホーム化に勤しんでいた。
そんな中でチャンネルポンを我が家のスマートスピーカーで再現してみた。
環境としてはamazon echoとnature remoのみ。

Nature スマートリモコン Nature Remo Remo-1W2(2nd Generation)

Nature スマートリモコン Nature Remo Remo-1W2(2nd Generation)

  • 発売日: 2018/10/25
  • メディア: Tools & Hardware


チャンネルポンが何かってのは、テレビの電源オフの状態でリモコンのチャンネルボタンを押すと、そのチャンネルで電源が入るという機能。
sonyのテレビ には実装されているらしい。単純ながら便利な機能。
www.sony.jp

これをスマートスピーカーで再現しようとすると、例えば「アレクサ、日テレ」と言うと、電源オフ状態のテレビが電源オンになりチャンネルが日テレに替わる。

日テレを例に実現方法を説明すると、アレクサアプリで以下のようなルーティーンを作成した。

シュレディンガーの猫、②alexa発話「ー」、③日本テレビ
の3つのコマンドで構成されており、順に解説すると、

シュレディンガーの猫
シーンはnature remo で以下のように作成

ここでがテレビの電源を確実についた状態にしている。
"確実に"と言っているのはその時点でテレビの電源状態に関わらず、このコマンド後は電源オンの状態になる。
これの動作の背景として電源がオンになった直後はテレビがリモコン操作を受け付けない仕様を利用している。詳しくは下記のnatureの記事を参考に。
nature.global

これにより電源オンの状態でも、オフの状態でも確実にテレビが電源オンの状態になり、日テレがつく。
チャンネルポンとしては電源オフ状態での動作だが、スマートスピーカーで再現するにあたって電源オンオフそれぞれでルーティーンを作りたくなかったため、この仕様を盛り込んだ。

②alexa発話「ー」
待機時間として設定。体感で2秒程度?
発話と言いつつアレクサは何も言わないので、安心して欲しい。
【Alexa】定型アクションで無音のウェイトを入れる方法 | TeraDas

上述の通り、テレビの電源オン直後は入力を受け付けないため、入力を受け付けるまでの待機時間として設定。
alexaデフォルトの待機機能だと最短で5秒と長いため、使用しなかった。

2020/06/28追記
5s待機に変更した。
alexa発話「ー」だとより短いので次の③の動作までタイムラグが少なくて済む。
しかし、電源オフの状態からチャンネルポンを操作すると、テレビが寝起き?で次のチャンネル操作の信号を受け付けないことが判明。
5sはやや長くも感じられるが、これも慣れるしかない。


日本テレビ
テレビのチャンネルを4に替えるだけのシーン。

日テレ以外にも、NHKeテレ、フジレテビ、TBS一通り作ってみた。なぜかeテレを定型句にするとアレクサに「ビデオスキルがうんたら」と怒られてしまい、教育にしている。そのあたりの仕様が理解が不十分。
ちなみに消音ポンという機能もあるらしく、その名の通りリモコンの消音ボタンを押すと消音状態ででテレビの電源が入るというものでこちらも同様に再現可能。

以上

air time capsuleでプッシュ接続 iOSアプリ版

先日電子レンジが壊れたので、ヘルシオを購入した。10年近く使うものだしせっかくならいいものをと上位機種を選んだ。

 

そんなこんなでヘルシオが届いてセッティングしてたら、最近のIoT家電らしくネット接続を要求された、しかも接続方法がWPSのみの仕様。

 

我が家ではルーターAppleair time capusleを使用している。air time capusleにはWPS機能のボタンがないため、iOSアプリのairport utilityで接続できたので、備忘として残しておく。ちなみにパソコンでも同様にできる。

 

airport utilityをダウンロード。以下のアイコン

f:id:takeuchi61:20200524163237p:image

 

アプリを起動すると、使用中のair time capusleが表示されるので、こちらをタップ

f:id:takeuchi61:20200524162446p:image

 

 

画面右上のeditをタップ

f:id:takeuchi61:20200524174602j:image

 

 

advancedをタップ

f:id:takeuchi61:20200524174616j:image

 

 

add wps printerをタップ。printerとなってるけど、それ以外の機器でも問題なし。

f:id:takeuchi61:20200524174630j:image

 

 

first atemptをタップ。

f:id:takeuchi61:20200524162524p:image

 

 

この状態がWPSのプッシュした状態。ここで機器を接続する

f:id:takeuchi61:20200524162532p:image

 

以上

 

Excelショートカットキーと自作アドインとのコンフリクト回避法

先日『神速Excel』という本を読んで、Altキーを使ったコマンド選択を仕事で使うようにしている。
例えばセルの塗りつぶしをAlt→H→H→Nだったり、格子にするのにAlt→H→B→Aだったり。
手が覚えるくらいにキーを打てれば便利だろうなと思う一方で、とは言えなかなか覚えられないというのが正直なところ。
この本自体はセルの選択、作業に分けて効率化する手法が書かれており実際に使える良書である。

神速Excel 【ダウンロード教材付き】

神速Excel 【ダウンロード教材付き】

  • 作者:中田 元樹
  • 発売日: 2019/09/05
  • メディア: 単行本(ソフトカバー)

そこでとなると飛躍するが最近Excelのアドインを自作している。
具体的には値貼付けとか、セルのグレーアウトだったりVBAのコードとしては短いけど実務で使うもの。
マクロ記録で記録としてはアドインに関数として追記して、関数にキー割り当てするという作業をコツコツとこなしていた。


その中で苦労したのが、デフォルトで設定されているショートカットキーとのコンフリクトを回避する点。
というのもExcelの場合かなりのCtrlキー+「」がすでに使われている。

またaltキー+「」もアクセスキーという名のショートカットキーライクなものが存在する。
具体的には下の画像にあるようなAltキー押した際にExcel上に表示される文字だが、厄介なことに表示されている以外にも以前のバージョンの名残で残っているため、こちらも留意が必要ということ。

Excel_accsesskey
Excelアクセスキー


そのため、自作したアドインのショートカットキーを割り当てようとしても設定できない場合が多い。
上書きするというのも手としてはあるが、環境が変わったときに同様の操作ができないため、極力自分はデフォルト設定はそのままで空いているキーに追加するというスタンスをとっている。

そこでその対策として地道な手ではあるが、どのキーに何のコマンドが割り当てられているかのキーマップを作成してみた。
それが以下の画像。

Excel_keymap
Excel_keymap
すべてのショートカットキーを網羅できてはいないが、ひとまず割り当て時に悩まなくてすみそう。
作ってみて今まで知らなかったショートカットを発見することもあったのは、思わぬ良かった点。
また、Excelマクロの仕様としてundoができないため、各コマンドに対するundoに相当するコマンドも同時に設定してやる必要がある点。例えば、「グレー塗りつぶし」する操作と同時に「塗りつぶしなし」を作る等。

Excelだけでなく、CADソフトとかコマンドが多いので一度整理する意味で作ると便利かと思う。

therma2.0の実力は?

therma2.0を入手したので、普段使いしているサーモスとの性能比較をしてみた。

 

therma2.0は純チタン製の真空ボトルで、軽量、耐久性、抗菌性を売りにクラウドファンディングMakuakeにて目標金額20万円に対し、50倍以上の金額を集めてた話題のプロジェクト。公式サイトだと179USDとボトルにしては高過ぎるが、見合った性能を有するのか気になっていた。


Ti22 – Therma: World’s First Pure Titanium Thermos Vacuum Bottle


ちなみにプロジェクトオーナーであるThingfyのTi22チームは他にもチタン製のカトラリーとか、チタンの加工に強みがあるっぽい。

前々から性能とそのデザイン性に気になっており、この度フリマサイトでtherma2.0を入手できたので、普段使いのサーモスと性能比較を行った。

今回の比較対象として使ったは以下の一般的な下記の製品。 

過去にサーモスの山専ボトルと初代thermaを比較された方の記事を読んだことがあった。2.0となり保温性能が向上したことでその点での違いも確認したい。

検証方法としては沸騰した水をボトル内に入れて、冷蔵庫に投入。
ボトル内の水温を経時変化を比較した。

 

今回用いたボトル。
左のサーモス(JNL-502)本体重量が206gの容量が400mlに対し、右のtherma2.0は256gの450ml。
容積あたりの重量からはサーモスのほうがより軽量と言える。

 

f:id:takeuchi61:20200201112057j:image

 

結果としては以下のようになった。
公式が謳っている6時間後に59℃前後というのはおおよそ仕様通りの結果となった。
対サーモス比較では保温性能が劣る結果が確認された。

 

f:id:takeuchi61:20200201133212p:plain

 

 これはおそらく蓋部分からの放熱によるものと思われる。
胴体部分が両者ほぼ同程度の温度に感じられたのに対し、蓋は圧倒的にtherma2.0が触ってみて熱かった。飲み口の形状が異なることも影響しているものと思われる。

以上、保温性能に関してサーモスのほうが優れているが、Tiという素材の強みだったり、デザイン性は良いのでその点で選ぶのはありと思う。