「IT」カテゴリーアーカイブ

ITに関する事柄

MS Wordの描画キャンバスの使い勝手Hack その2

その3を書きました(2011.10.7))

描画キャンバスの使いにくい特徴の対策については昨日書いた通り。

でもって、そのマクロの機能を毎回「開発」のリボンから呼び出すのもかったるいので、そいつらはよく使うリボンに登録しちゃいましょ、の話し。

まず、Wordのオプションを開く。それから、、、

  1. リボンのユーザ設定を選択
  2. 「コマンドの選択」で「マクロ」を選択
  3. 「リボンのユーザ設定」で「ツールのタブ」を開いてから「描画ツール→書式→配置」を選択

Wordのオプション

  1. 新しいグループを作って
  2. マクロを追加して
  3. 名前を適宜変更する

マクロをボタンに

これでリボンにボタンを登録できた。
リボンに反映された

めでたしめでたし。
不要ならこれで開発リボンは非表示にしてもOKです。

MS Wordの描画キャンバスの使い勝手Hack(ってほどでもないけど・・・)

その2その3もあります(2011.10.7))

どっぷりIT系のお話。

技術系の話題に興味がない方はスルーで。
でもMicrosoft Word 2010を使っていて描画キャンバス関連で悩みがある人は読むともしかして解決するものがあるかも。。。
あくまでも「かも」。

同じ大学で教えていて縁のある高橋信夫先生のブログでWord 2010の仕様なのか不具合なのかわからないけど不都合がある特徴についての記事を読んだ。

恥ずかしながらこの特徴について問題意識はなく、今までじっくり考えたことがなかったので、これを機に検証したりしてみた。
結果、最も具合が悪くかつスマートな回避策がなさそうなのが
描画キャンバスの中では配置関連の機能が使えない
という点。

描画キャンバスと配置機能
描画キャンバスと配置機能

一旦気づいてしまうとどうしても気になってしまうもので、解決策を考えた。
マクロを登録しちゃいましょうって方向で。
まぁその時点で若干ハードルは高いけど以下の手順通りやれば問題ないはず。
あくまでも「はず」。

何かあっても責任は取れませんので、あくまでも自己責任でよろしくです。

まずは、マクロが使えるように「ファイル」メニューの「オプション」で「開発」というリボンを表示させる。

Wordのオプション
Wordのオプションで開発リボンを表示

表示されるようになった「開発」のリボンから「Visual Basic」を開く。
で、「Normal」を右クリックして標準モジュールを追加する。

標準モジュールの追加
標準モジュールの追加

このNormalってのは、Wordで文書を新規作成するときに読み込まれる設定テンプレートのようなもの。
つまりNormalにマクロを追加してあげれば今後新規作成する文書もすべてこのマクロが使えるようになる。
でもってこのマクロは編集して保存するWordファイル自体には組み込まれないので変なセキュリティ云々の心配もなし。
作成した文書も安心して配布可能☆

で、標準モジュールの中にできた「Module1」に以下のコードをコピペ。

Private Sub AlignHorizontal(ARate As Single)
Dim Min, Max, i As Integer
    Min = 32768
    Max = -32768
    For Each AShape In Selection.ChildShapeRange
        If Min > AShape.Left Then
            Min = AShape.Left
        End If
        i = AShape.Left + AShape.Width / 20
        If Max < i Then
            Max = i
        End If
    Next AShape
    For Each AShape In Selection.ChildShapeRange
        AShape.Left = Min * (1 - ARate) + Max * ARate - AShape.Width / 20 * ARate
    Next AShape
End Sub

Private Sub AlignVertical(ARate As Single)
Dim Min, Max, i As Integer
    Min = 32768
    Max = -32768
    For Each AShape In Selection.ChildShapeRange
        If Min > AShape.Top Then
            Min = AShape.Top
        End If
        i = AShape.Top + AShape.Height / 20
        If Max < i Then
            Max = i
        End If
    Next AShape
    For Each AShape In Selection.ChildShapeRange
        AShape.Top = Min * (1 - ARate) + Max * ARate - AShape.Height / 20 * ARate
    Next AShape
End Sub

Private Sub AlignShape(AHorizontal As Boolean, ARate As Single)
    If Selection.ChildShapeRange.Count = 0 Then
        Exit Sub
    End If
    If AHorizontal Then
        AlignHorizontal (ARate)
    Else
        AlignVertical (ARate)
    End If
End Sub

Sub AlignHorizontalLeft()
    AlignShape True, 0
End Sub

Sub AlignHorizontalCenter()
    AlignShape True, 0.5
End Sub

Sub AlignHorizontalRight()
    AlignShape True, 1
End Sub

Sub AlignVerticalTop()
    AlignShape False, 0
End Sub

Sub AlignVerticalMiddle()
    AlignShape False, 0.5
End Sub

Sub AlignVerticalBottom()
    AlignShape False, 1
End Sub

で、Visual Basicの窓は保存したら閉じてOK。

もうこれで使えるようになった。
描画キャンバスの中身のうち配置を調整したいもの(図形でもクリップアートでも)を複数選んでから「開発」リボンにある「マクロ」ボタンをクリック。
6つのAlign関連のマクロが登録されているはずなので、それを使用。
あとはマクロの名前から動作は察してください。

(2011年8月4日追記:いちいちマクロを呼び出すのは面倒なのでこれらをリボンに登録する話を書きました

描画キャンバス外の要素には効果がないようですが、描画キャンバス外ならそもそも正規の配置機能が使えるのでそちらを。
ほぼテストコードなので「利用は各自の責任で」というお約束の記述も一応。
このコード程度の規模で著作権どうこうなんて言うつもりもないので利用・改変はご自由に♪
転載するときなどはこの元記事にリンクとかあると嬉しいな、くらいの感じです。

「そのコードじゃ美しくないぜ」などご意見等はコメント欄まで。
「動きません・・・」系の質問などもコメント欄にどうぞ、ではありますが、サポートしきれない可能性が高いので予めご了承を。

引っ越し

家の話ではなくコンピュータの話。

音楽の仕事はMacでやってるけど、それ以外の事務作業などなどはWindows。
ここしばらく使ってたのはもう5年選手のデスクトップ。
それなりにメンテもしてるから十分に動いてくれてはいるんだけど結構ファンがぶんぶんまわってちょっとうるさいなーって感じになってきた。

ということで、春先にノートPCを買って基本的には外出先で使うってことで使ってきたんだけど、こいつをメインマシンにすることに。

外出先に持って出たときに、万が一紛失・盗難ってことがあっても個人情報とかが流出しないように、大事なデータは外付けHDDに。
データの引っ越しって結構手間かかるし、なにより時間がかかる。
ようやく一段落かなーってとこ。

配線替えなんかも結構やったから、気づけば仕事場が相当散らかった。。。
次は仕事場の掃除だなー。
仕事の合間に進める作業なので結構日々あたふた状態。

おかげでWindows機の音は相当静かに。
ただ今度は相対的にMacの音が気になるように。。。
Macのほうはまだまだ現役で頑張ってもらう予定なので、一回中開けて大々的に掃除をしてあげないとなぁ。

サマータイム

地震以降、電力需給の件に絡んでサマータイム導入を提起する人が出てきてる。
賛否両論あるだろうけど、「時計を1時間ずらす」という意味なら個人的には反対だなぁ。

なぜなら、日本においてこの時期に「時計をずらすサマータイム導入」はデメリットやリスクが多すぎると思うから。

日本の世の中を支えてるコンピュータシステムには少なからずUTC(協定世界時)以外のローカルタイムスタンプを使用していると思う。
もちろん「日本の世の中を支えてるコンピュータシステム」を全て知っているわけではないので多分に私見。

もしどこかのシステムで継続時間の計算が「終了時間-開始時間」って設計になっていたらそこは修正が必要。
電車のダイヤは切り替わりのタイミングでどうするのか。仮に翌日の始発からサマータイム運行にするとして1時間とか短くなる準備・整備・待機時間で対応できるのか?
データベースとかでIDがyyyymmddhhnnss形式とかで時系列になっている判定をするシステムで対応はできるのか?
とか。
大規模なシステムは将来的なサマータイム導入も視野に入れた設計かもしれないけど、中小規模のシステムでちょっと昔のものはそうなってはいないはず。

現実には、実際サマータイムを導入している国もあるわけで、何かしらの解決手段はある。
でもその手段を実行するにあたっては、全ての関係者がサマータイムで何が起きるかを理解しないといけない。
コンピュータシステムであれば設計者からプログラマまで全ての人がそのシステムで起こりうることを想定しないといけないし、
日常生活においても一般の人全てがいろいろなものがどう切り替わるのかをある程度は知ってないといけない。

日本で生活している人にとってサマータイムに関する理解や経験が浅いのは明らか。
戦後の一時期を例外として導入したことがないんだから。
それこそ「想定外」のシステムエラーや混乱が起きるんじゃないか。
僕らは、サマータイム導入で起きうるすべてのことを想定するだけの経験を決定的に持ち合わせていない。
この夏までに導入の是非や想定の議論にエネルギーを費やすくらいなら他にやるべきこと・やらなきゃいけないことがあるんじゃないか。
本当に良い制度なのであれば、社会的な余裕ができてからじっくり熟慮して導入すればいい。

そんなふうに考えてます。

導入の効果についてもいろんな意見があるみたいだけど、そこについてはあまり考察をしていないのでここでは触れないってことで。
「活動時間の前倒しが節電になる」っていう明確な説明ってあるのかなぁ。これも反対意見が出てきてそもそも論で紛糾しそう。。。

ただ、活動時間の前倒しが節電につながるのであれば、可能な企業や組織単位で局所的にタイムスケジュールを前倒しすればいい。
9時~5時だった活動時間を8時~4時にするとか。
節電効果がドカンと出る妙案はないものか。。。やっぱり地道な節電の積み重ねか。

珍しく社会的なトピックについて書いてしまったなぁ。

とりあえず今のところ水はあるから、今年は打ち水とか水風呂とかが流行るのかな。
扇風機の後ろ面に濡れタオルを置くとかでも効果あるかなぁ。やったことないからこの夏は試してみよう。

ちなみにねずみやの中では「サマータイム→Mr.サマータイム→サーカス」というシナプス連結がありまして。
まぁたしかにMr.サマータイムも名曲かもしれないけど、個人的な好みとしてはWOMAN IN LOVEに入ってる「風色のメッセージ」がいいなぁ。
一時期カセットテープでヘビーローテーションだったー(ってずいぶん昔・・・)。

REGZAのハードディスク その後

認識しなくなったREGZAの外付けハードディスクを復旧する話を以前書いた(追加情報も)。

その後、何度か同じ症状が出てその都度復旧することはできてたんだけど、ついに復旧しない日が来てしまった。。。
やっぱりハードウェア的な不具合なのか相性が悪いのか・・・

結局別のハードディスクをつけることと相成りました。
認識しなくなる症状が出た場合は、復旧できるうちにデータを移動して別のハードディスクにつけ替えたほうがよいかも、です。

ちなみに外したほうのハードディスクはフォーマットしなおせばパソコンなどで使えるかもしれないけど、まだやってないので何か問題があったらまたブログに書くとします。