継続試行中 自動暗号化環境でのマクロ利用
完全自分用メモ&書き出すことで考えをまとめようとしている内容になります。
セキュリティ保持のため,職場ではファイルが自動的に暗号化/復号されます。
Excelファイルであれば workbooks.Openとかの書き方は全滅です。
マクロ以外でいえば,Wordの差し込みなども全滅になります。
セキュリティ保持のため,自動暗号化/復合は妥当な対応とは思っていますが,他のファイルとの連携をする組み方が全く使えなくなりました。
他ファイルとの連携を除外した組み方でいけばいい,と思ってはいますが,それにも限界があります。
ファイルの共有が全く安定して働きません。すべての処理を1つのファイルに集約すると複数人で処理ができないものができあがります。
ファイルを閉じるとき自動暗号化され,開くときは自動復合される。
アプリケーション内の履歴からは開けないという,「最近使ったファイル」殺しな感じです。
ダブルクリックとかして,開いた後は,マクロは使えるので,
Dim objShell As Object:Set objShell=CreateObject("WScript.Shell") objShell.Run Thisworkbook.Path & "\暗号化ファイル名1" objShell.Run Thisworkbook.Path & "\暗号化ファイル名2" objShell.Run Thisworkbook.Path & "\暗号化ファイル名3"
とかで関連付けを利用してファイルをたくさん開くのにマクロ1つ。
開いた後は普通にWorkbooks(Index)で取得していけるので処理部分のマクロを1つ。
こうすればやりとりはできるなぁというのが一つ目の対処候補。
ファイルを開き終わるのを,ちゃんと待てるかとか いろいろと問題があって自分用には簡単だけど他人に使わせるのは危険な代物。
API利用とかShellのRunとか,もう忘れちゃいましたけどShellExecuteとかいろいろチャレンジしてみましたけど
あまり思わしくありませんでした。
もう一つの候補は,目的のファイルを開くことだけはShellのRunで開けるので,
Workbook_Openイベントでデータ元からデータを抜き取り,保存して,自分自身を閉じるような処理ファイルを作る。
処理ファイルだけを開くときは,If Workbooks.Count=1 thenみたいな感じで,
処理ファイルだけのときは勝手には閉じないみたいに作れば 収集自身はなんとかなりそうな感じでした。
今まで私がつくるものは,処理コードやテンプレートをまとめたファイルがあり,そこにいろんな処理ボタンがあり,データ元のファイルを開いてはデータを抜き閉じる。これを繰り返す。
こういうスタンスでいままでいろんなデータ処理をしていたんですが,とりあえず全滅です。
開くことはできる。開いた後なら処理もできる。
でも,開いて処理をする,と書くのが難しい。
処理が返ってこなかったり,処理を待たせきれずにさっさとマクロが終了したり。
自動暗号化されるという職場の対処は妥当だと思っているので,それにも負けない組み方を今年はやり遂げたいなぁ。
ちっちゃな目標ですが,自分の中ではけっこう大きな目標の1つです。
詳しい仕様を書くわけにはいきませんので,ナニヲイッテイルンダコイツハというエントリですがスルーしていただければ(;´▽`A``
セキュリティと使い勝手はトレードオフ的なところはあるので,それを乗り越える力を身に着けたいものです。