管理人Kのひとりごと

デジモノレビューやプログラミングや写真など

Excel2003迄の印刷ダイアログを開く(Excel)

Excel2007あたりから、印刷ダイアログが変わり、特定シートのみの印刷や、ブック全体指定のショートカットキーが煩雑になりました。
そこで、ExcelVBAを使い、旧来の印刷ダイアログを出せるようにしたいと思います。
下記サブルーチンを「Ctrl-P」に割り当てれば、旧来の印刷ダイアログを呼び出せます。

Sub showOrgPrintDialog()
    ' arg12:=3 は、「ブック全体を印刷」の指定
 Application.Dialogs(xlDialogPrint).Show arg12:=3
End Sub

f:id:ksk1130:20170306215125p:plain

ワークシート関数でlastIndexOfする(Excel)

ワークシート関数にはlastIndexOfに似た関数ないんですね...
というわけで、なんとか頑張ってみました。そして、そいつを使ってフルパスから拡張子を取得してみました。

=RIGHT(A1,LEN(A1)-FIND("$",SUBSTITUTE(A1,".","$",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))

' 以下はかみ砕いたやつです
=RIGHT(A1,                                                        '一番最後の探索対象文字(".")("$"に置換された)以降の文字列を求める(4)
       LEN(A1)-FIND("$","$"の登場位置を求める(3)
                    SUBSTITUTE(A1,".","$",                        ’対象の文字列の、一番最後((1)で求まる)の探索対象文字(".")"$"に置換(2)
                               LEN(A1)-LEN(SUBSTITUTE(A1,".","")) '対象の文字列から、探索対象文字(".")の登場回数を求める(1)
                              )
                   )
      )

以下は、上記ワークシート関数で、フルパスから拡張子を取得したもの

パス 拡張子
C:\Users\hoge\Documents\powershell\resize.ps1 ps1
C:\Users\hoge\Documents\powershell\resize720.bat bat
C:\Users\hoge\Documents\selection\P1130932.JPG JPG
C:\Users\hoge\Documents\selection\P1130947.zip zip
C:\Users\hoge\Documents\selection\P1130958.png png
C:\Users\hoge\Documents\selection\P1130965.jpg jpg

ExcelファイルをPDF化する(ExcelVBA編)

Excel2007以降なら、VBAでPDF化できるようですね。
そんなわけで書いてみました。変換元Excelファイルと同じ場所にPDFが格納されます。
表示されたシート、印刷範囲が適用され、全シートが1PDFファイルになります。
https://msdn.microsoft.com/ja-jp/library/office/ff198122.aspx

Sub ボタン1_Click()
    Dim fileNames As Variant
    Dim fileName As Variant
    Dim idx As Integer
    Dim FSO As Object
    Dim extensionName As String
    Dim PDFFileName As String
    
    fileNames = Application.GetOpenFilename(MultiSelect:=True)
    
    If IsArray(fileNames) Then
        Set FSO = CreateObject("Scripting.FileSystemObject")
        idx = 0
    
        For Each fileName In fileNames
            extensionName = FSO.GetExtensionName(fileName)
            ' 元のファイル名.pdfを生成(.xls(x)は除く)
            PDFFileName = Left(fileName, Len(fileName) - (Len(extensionName))) & "pdf"
            Debug.Print PDFFileName
        
            Workbooks.Open fileName
            ’ 全ページをPDF可する
            ’ 印刷範囲を加味する
            ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, fileName:="", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False
            ActiveWorkbook.Close
            
            idx = idx + 1
        Next fileName
        
        MsgBox "変換完了(" & idx & "件)"
        
        Set FSO = Nothing
    Else
        Exit Sub
    End If
End Sub

ルンバ680買いました。皆さん、ぜひ買いましょう!

3週間ほど前に、ルンバ680買ったんですよ、ルンバ680。おすすめ家電です。
f:id:ksk1130:20170219220050j:plain

なぜ買うに至ったか

部屋をきれいにしたいけど、手間はかけたくないなぁと。あと、ロボット掃除機が欲しかった!ロボット掃除機を買うと、自然とものを床に置かなくなるって聞いていたので。
すでにサイクロン式掃除機(有線タイプ)はあるのですが、掃除するために線を伸ばし、線をひきまわしながら掃除するのが面倒で、だんだんと出番が...
そんなわけで、ロボット掃除機を買うことにしたんです。

買ったモデルと、価格

なんとなく、買うならルンバ!とは思っていたのですが、三角形のタイプとか、超小型タイプとか、いろいろあったため、店頭で見ながら選定しました。
が、シンプルな操作性や、価格に惹かれ、最終的にルンバにしました。
買ったモデルは、繰り返しますが「ルンバ680」です。\53,870也。ボトムレンジのモデルです。
個人的に大事だと思ったのは、タイマー実行機能がついていたこと。店頭で動かしてみたのですが、どのモデルもそこそこ音がしますね。通勤時にスイッチオンだと、ちょっとうるさいかなーと思っていたのと、手動スイッチオンだと結局動かさなくなってしまうかな、と思ったので、タイマー機能は必須でした。
http://store.irobot-jp.com/item/680.html

使ってみて、よいところ

  • やっぱり"ルンバナイズ"される

買ってすぐ、特に片付け等をせずにルンバを動かしてみたのですが、いろんなものに当たったり、乗っかったり、吸い込んだり...思った以上に強引なヤツでした。なので、必然的に床の上のものを片付けるようになりましたね。アイツ、容赦なく当たっていくんです。当たって、ぶつかってから考える。タフなヤツです。

  • タイマー機能は便利

火、木、土、日のAM10時から起動させています。ゴミのたまり具合から、あー、動いたんだなってのがわかります。床に落ちた靴下を吸い込んで、電池切れになっていたのを見て、なんだか愛らしいなー、とか思ったり。ルンバの日は、とりあえず床の上のものをベッドに上げるようにすることで、メリハリが出た気がします。また、不在時に掃除してくれるというのは、未来感があってよいですよ。

  • 意外とチリ(?)を吸う

動かしてみて、ダストパックを見ると、思った以上にチリ、砂(?)のようなものを吸っていました。あまり吸引力は期待してなかったので、予想外でしたね。これからは花粉の時期ですから、大活躍が予想されます。

使ってみて、微妙なところ

  • ホームベースが動く

ホームベースには、一応ゴムが貼ってあるのですが、ルンバは容赦せず突っ込んできて、動かしてしまいます。壁際に設置しないと、タックルで動かされてしまい、戻ってこれないことも...

  • 髪の毛には弱い

上では、チリ、砂は吸い込むと書いていますが、髪の毛はあまり吸ってくれません。なので、最終仕上げはフローリングワイパーでやっています。

  • ガツガツあたる

きっとセンサーはあると思うのですが、基本的に当たってから考えるタイプ。長期的に動かしていいたら、お互い傷だらけになりそうです...

総括

よいところ、微妙なところそれぞれありますが、やっぱり自動で掃除してくれるのは便利。日々きれいな状態を保つことで、汚さないようにする意識が芽生えたのもよかった。早く買っておけばよかった、そう思えるガジェットです。

以下、開梱時の写真
f:id:ksk1130:20170320170815j:plain
f:id:ksk1130:20170320170816j:plain
f:id:ksk1130:20170320170817j:plain

arrow M03あれこれ

最近のarrows M03についてあれこれ。

購入記


カメラ、なかなかです

昨日、芝離宮へ行ったんです。
旧芝離宮恩賜庭園|公園へ行こう!

梅が咲いたらしいんですが、うっかりGM1を忘れてしまいまして...arrorwsM03のカメラを使ってみました。
もともとケータイのカメラにはあまり期待してなかったんですが、使ってびっくり!なかなかきれいに撮れるじゃないですか。技術の進歩って素晴らしい。以下、arrowsM03の写真です。
f:id:ksk1130:20170205220502j:plain
f:id:ksk1130:20170205220503j:plain
f:id:ksk1130:20170205220504j:plain
f:id:ksk1130:20170205220505j:plain
f:id:ksk1130:20170205220506j:plain
f:id:ksk1130:20170205220507j:plain
f:id:ksk1130:20170205220508j:plain


強制的に再起動するには...?

こないだ、強制再起動を必要とする場面があったんですよ。
通知LEDは点滅するんだけども、電源ボタンで画面が点灯せず...みたいな状況になりまして。
電池バック取り外せないから、強制電源断ってできないの...?と焦りましたよ。SUICAとかEdyとかまとめてるし、LINEも久しくバックアップとってないし...みたいな。
焦りながら調べたらありました。以下の手順だそうです。

電源キーと音量上キーを同時に8秒以上押下


手元にタブレットがあったからよかったけど、外出先だったら相当焦ったろうな...事前に覚えとかないといけませんね。
そして、集約しすぎは便利だけども、イザというときは結構危険、ということを思い知らされましたね。あ、強制電源断後は元気に動いています。

末尾が"/"(スラッシュ)で終わるかどうか判定する(Excel)

\掲題の通り、Excelで末尾が"/"(スラッシュ)で終わるかどうか判定する方法。
たまにこういうのが必要になるので...

=EXACT(IFERROR(FIND("/",A1,LEN(A1)),0),LEN(A1))

実行例はこんな感じ

対象 True/False
a/ TRUE
a/b FALSE
a/b/ TRUE
a/b/c FALSE