Windows7からWindows10への移行

普段使いのOSをWin7からWin10に変えました。
さすがにちょいちょい変わっていて困ったのでメモ

スタートアップの場所

以前は「msconfig」からいじれましたが、スタートアップはコマンド指定で「shell:startup」で修正に統一された
フォルダ的には

C:\Users\garapon\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

コントロールパネル

コントロールパネルが「Windows システムツール」の配下に隠れている
最初みつからなくて涙目だった。

HOSTSの更新

HOSTSファイルなどの更新がめんどくさくなった。
直接ファイル書き換えられず、別の場所でコピーして上書きするといった方法が楽。

コピー禁止のPDFからデータをコピーする

PDFによってはコピー禁止になっていて単純にはコピーができないものがありますがオレオレRPAとかには邪魔でしかありません。

なので以下のように突破しましょう。
1、GoogleChromeで該当ファイルを開く
2、印刷ボタンからPDF生成を選択
3、印刷して出力されたファイルを開く
あら不思議コピーできちゃいます。

あとはこの結果をツールに食わせるなりご自由に。

電子決裁等代行業者とオープンAPI

オープンAPIの法整備として2017年5月26日に「銀行法等の一部を改正する法律」が可決されました。

半年ぐらいたったので改正銀行法関連の政省令案がそろそろ公表されるのじゃないかと思っているのですが出ませんね。
てなこともあるので、電子決裁等代行業者等代行業者について頭の中を整理しようと思ったのですが 以下のPageによくまとまってたので以下Pageをみんな読みましょう。

thefinance.jp

ExcelVBAでRPA(Robotic Process Automation)するコツ

とある古のシステムのUIが悪いのでExcelVBAでがんばってみた。
VBAなら特にお金もかからないし、なにせIE縛りのシステムでも手軽にRPAできる。
ほんとエクセルは最高です。

さて、そんないけているIE縛りのレガシーなIE縛りのシステムをVBAでRPAする際に気をつけるポイントをまとめてみた。
どうみてもバッドノウハウ集ですね。

小画面を拾う

古のシステムではやたら新しいウインドウが開きます。
自分で開く場合はオープンするプロセスの中で新しいウインドウを捕捉できるのですが、
大半はjsとかで開かれ、メニューバーとかを潰したりとがんばっているのでそこを読み解くのは心が折れます。
開いた後ウインドウを探してタイトルで捕捉しましょう。
こんな感じでIEのウインドウをすべて探し出して、タイトルとかURLで補足

    Set objShell = CreateObject("Shell.Application")
    For Each objWin In objShell.Windows
        If objWin.Name = "Internet Explorer" Then
            Set objIEsub = objWin
              If objIEsub.document.Title = "ユーザ検索画面" Then
                  Exit For
              End If
       End If
    Next

子画面の表示が終わりきる前に動いてしまうことがあるので、そんなときはApplication.Waitでも入れましょう。

フレーム対処

古のシステムではなんでもない画面でもフレームが多用されてるのも特徴なのでこれも対処、
document.framesで掘っていきます。入れ子になっていてもがんがんいきましょう

Set inputTag = objIE.document.frames("contents").document.getElementById("ok")
inputTag.Click

IDがついてない項目

これはしゃーないので気合いで対処します。
何番目のInputタグだとかで気合をいれて操作してください。
もうコツでもなんでもないですね。


IE専用にデザインされているシステムは使いにくいことも多いのですが
こんな感じでなんとか共存できるのではないかと。

多忙のスパイラル

多忙のスパイラルにはまっており、なんとか対処が必要。

  • 忙しい
  • とりあえず作業してしまう
  • 品質悪く、時間かかる
  • より忙しくなる

という流れ。
やはり作業の前にちゃんとインプットをしないといけない。

とはいえ、自分が未経験の領域だと、何を学んでいけばいいのか、どう学べばいいのかがわからず、インプットに非常に時間がかかってしまう。
そのため、時間のわりにいいインプットにならず、スパイラルから脱却できない。


ここでどう打開するかと考えると、無限の時間がないのであれば、やはり、先人の成果とその過程を学び、思考をトレースしながら不明点を質問して補強していく。これしかないだろう。

過去資料を読みまくろう。
そしてわからないこと聞きまくろう。

Outlookバックアップデータファイルのダイエット。

Outlookのバックアップファイル(archive.pst)が5Gを突破してだいぶ大きく育ってきてしまったので削減にチャレンジ。

  • 不要メールの削除

特に添付ファイルがついているメールをがんがん消す。

  • メールを完全に削除

削除済みアイテムを右クリックして空に

  • ファイルを圧縮

ファイル⇒アカウント設定⇒データファイルタブの中から対象を選んで圧縮ボタンをクリック

  • 待つ

ひたすらまつ。わたしは30分ぐらいかかりました。


これだけで5.7Gあったファイルが4.6Gまで減りました。大分ダイエット成功です。(まだおおいけど。。。。。)

本家の手順はこち
https://support.office.com/ja-jp/article/Outlook-%E3%83%87%E3%83%BC%E3%82%BF-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB-pst-%E3%81%8A%E3%82%88%E3%81%B3-ost-%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E5%B0%8F%E3%81%95%E3%81%8F%E3%81%99%E3%82%8B-e4c6a4f1-d39c-47dc-a4fa-abe96dc8c7ef

改行コードCRはなぜ(^M)で\rなのか

Windowsで作ったファイルをLinuxで開くとファイルの末尾とかに^Mがたくさんついて文字化けしちゃったーとかなりますよね。
^Mは改行コード(CR)で、上記状態は改行コードCRLFのファイルを改行コードLFで開いているから起こる事象です。

なおしたければvim

%s/^M//g

と打てばいい。(^Mを入力するには Ctrl+V として制御文字をうつモードに移行して Ctrl+M と打てばOK)

まあそんなことはいいとしてなぜ改行コードCRが^Mなのかを調べてみました。

改行コード

改行コードには2つあります。

通称 英語名 日本語名 アスキーコード 正規表現 表記
CR carriage return 復帰 0x0D \r ^M
LF line feed / newline / end-of-line / EOL 改行 0x0A \n ^K

この2つのコードの組み合わせのどれかで現在PCは動いています。

ASCII文字コードに基づくシステムでは、CR(復帰、0x0D)、LF(改行、0x0A)、またはCR+LFで表している。
LF: UNIXUnix系のシステム。LinuxAIXXenixmacOSBeOSAmigaRISC OSなど。
CR+LF: CP/M、MP/M、MS-DOSOS/2Microsoft Windows
CR: コモドールによるシステム、Apple IIファミリ、Mac OS(バージョン9まで)、OS-9

改行コード - Wikipedia


で、当初のなんでCRが^Mなのかといことですが、実は上記の表をみると答えが書いてあるのです。
CRはアスキーコードで「0x0D」つまり10進数だと13。つまり13番目の制御コードです。*1
で、13番目のアルファベットといえば?? 「M」ですよね
なので^MがCRを意味するのです。

正規表現が「\r」なのはcarriage returnからでしょう。
同じようにLFは11番目で^Kでnew lineから「\n」になっているようです。

たぶんこういうことだと思いますが違う説もあるよとか間違っているよとかあればコメントお願いします

小ネタ

全世界の99.999%以上の人が使うことない機能ですが、
エクセルのユーザー書式内では、「Ctrl+J」を打つことで書式内に改行を埋め込むことができます。
しかしユーザ書式の入力画面は1行しか表示できず改行してしまうと何を打っているのかわからなくなる諸刃の剣、素人にはオススメできない

以下ページの最後のネタで使っています。
garapon.hatenablog.com

*1:0x00もあるので正確には14番目