Excel VBAの管理方法

Excel VBAで記述したプロシージャ/関数を複数個所から参照するときのまとめ

パターン1. 特定の場所にxlsmブックを作り、外部から参照する方法(Application.Run)
メリット:シンプル、管理が楽、修正も容易
デメリット:バージョン管理ができない、大人数で参照すると不安定化する可能性、元のxlsmのパスが移動すると、呼び出し側のパスをすべて変えなければならない

例:Functions.xlsmにcall_msgboxというSubプロシージャ/Functionがあり、他のブックから呼び出すVBAコード
なお、ファイルパスはシングルクォーテーションで囲まれていないとエラーとなる。

    Private Sub CallFunction()
      Const FilePath As String = "C:\Functions.xlsm"
      Const FuncName As String = "call_msgbox"
      Application.Run "'" & FilePath & "'!" & FuncName
    End Sub



パターン2. basファイルをベースに管理し、実行時にxlsm化する方法(VBComponents.Import)
概要:通常xlsmファイルはそのファイル内部のVBAコードを実行する。それに対し、VBAコードが記述されたbasファイルを用意しbasで書かれたプログラムを実行の都度、xlsm内部に当basファイルをインポートしたxlsmファイルを作成することでプログラムを実行する。このとき、basファイルをインポートするにはそれ専用のxlsmファイルかvbsファイルを用いる。 つまり、専用xlsmファイルかvbsファイルをクリックするとbasファイルをインポートしたxlsmファイルができ、コードを実行する流れとなる。xlsmの役割はbasを実行可能形式に変換するだけである。

メリット:basファイルはgithubで管理可能、それにより各フォルダ単位で管理可能となりパス移動問題が生じない、1ユーザー1実行ごとに1xlsmファイルとなるので安定性が高い
デメリット:理解するまでのハードルが高い、組織的に使うのならある程度サポートも必要、コードの修正はVBEではなくテキストファイルであるbasファイルで行うため、メモ帳しか入っていない環境だと少しハードルが上がる。
こちらの方法に関しては別途記述する。

北海道の流氷

日本で見られる流氷といえば北海道の網走が有名である。網走に行けば砕氷船おーろらで流氷の中をクルーズできる。

www.ms-aurora.com

過去に網走で砕氷船おーろらに乗ったときは、不運にも流氷の中をクルーズすることはできなかった。氷は風向きによって流されるものであり乗船時は氷が沿岸から離れていたためだ。離れてはいたが肉眼で見えたし、網走の極寒の気候を楽しめたのでそれはそれで満足であった。

 

しかし改めてリベンジしたい思いもあり、再度冬の北海道を訪れることにした。事前に流氷の状況を確認し、タイミングを見て北海道へ向かった。流氷の状況は海上保安庁が公開している。

www1.kaiho.mlit.go.jp

海上の氷の場所と風向きを考え、流氷の来る場所を予想する。リベンジ計画の時は網走沿岸から流氷の場所は少し離れており期待はあまり持てない状況だった。ただ、よく見ると北海道の東岸と国後島の間に多くの流氷があるようだった。調べてみると流氷クルーズは網走以外に紋別羅臼からも出ているのだった。海上保安庁のデータから期待が持てそうな羅臼に行くことにした。

 

 羅臼のクルーズは知床ネイチャークルーズが運航している。夏にもクジラ・イルカ・バードウォッチングクルーズを行っているようだ。

www.e-shiretoko.com

クルーズの前に羅臼の高台から海を眺めてみた。流氷は右手奥、国後島との間に白い平原が見えるところにありそうだ。羅臼沿岸にも白い氷の塊がぽつぽつ浮かんでいた。

f:id:kurama_sk:20200202203748j:plain

 

いざ乗船すると風が町から離れるほうに吹いており、流氷にたどり着くまでに多少時間がかかったものの、今回は無事に流氷を間近で見ることができた。

f:id:kurama_sk:20200202204749j:plain

奥は国後島

 

f:id:kurama_sk:20200202205117j:plain

 

羅臼の流氷はごつごつしている。現地の方によると、オホーツク海から流れてきた流氷が知床半島に引っかかって曲がったときに割れることでこのような形になるのだという。また、羅臼の特徴としてはオオワシオジロワシなど天然記念物に指定されている鳥が多くみられる。人慣れしており近くまで来てくれることもある。

f:id:kurama_sk:20200202210018j:plain

オジロワシ

 

f:id:kurama_sk:20200202210026j:plain

オオワシ

 

f:id:kurama_sk:20200202210357j:plain

カモメと知床半島

 

流氷やワシは天候や環境によるものであり必ず見られるというわけではないが、雪の知床半島国後島だけでも非常に美しい景色である。羅臼の町自体も景色もいいし食べ物もとてもおいしい。冬に限らず再び訪れたい場所である。

 

f:id:kurama_sk:20200202211938j:plain
羅臼川河口から知床方面

 

f:id:kurama_sk:20200202211049j:plain

岸壁のオジロワシ

 

iPhone XRで海外のeSIMを使った話

海外でインターネットを利用する場合、これまでは海外WiFiルーターのレンタルか、現地SIMの差し替えで、通信環境を用意していた。
最近のスマートフォンiPhoneであればXS, XR以降ではeSIMという電子的なSIMを利用でき、従来の物理SIMとも共存して使用できる。iPhone XRでeSIMを利用する機会があったのでメモしておく。
 
eSIMのメリットとして、WiFiルーターをレンタルしないので、受け取り・返却の手間がない、荷物が増えない、ルーターの充電を気にしなくてよい、プランにもよるが価格も安い、などである。物理SIMと比較しても、SIMカードの入れ替えが発生せず紛失リスクがない、SIMを手元に用意する手間(事前の入手or海外現地で購入)がないなどがメリット。
デメリットとしては、eSIMのアクティベーションiPhoneのAPN設定など普段触らないネットワーク設定の手間がある。
 

1. 通信事業者を探す

Googleで適当に検索すると、esimdbというサイトが出てきた。

esimdb.comこのサイトはeSIMの比較サイトであり、航空券でいうスカイスキャナーのようなサイトである。eSIMの購入は各通信事業者のサイトから直接購入する形態となっている。

今回は、Airaloという通信事業者のYes!Go!-3GB (9.00$)を購入した。オーストラリア向けSIMを購入し、決済はUSドル(オーストラリアドルでない)のため1000円程度であった。3GB1000円は国内格安SIM並みの値段である。ちなみにLTE-Data onlyで通話なしのプラン。

購入は出国日に行った。プリペイドで30Days有効であり、どのタイミングで利用開始になるかわからなかったため直前で購入した。結果として利用開始のタイミングは、eSIM をアクティベートしてからだった。 

 

Airaloは世界初の旅行者向けeSIMストア であり、アメリカをはじめ世界各国に対応したeSIMを販売している。www.airalo.com

 

 2. eSIMのアクティベーションと端末の設定を行う

購入後、端末設定用のQRコードや、手動設定用のSM-DP+アドレスとアクティベーションコードが付与される。

eSIMのアクティベーション

iPhoneの設定>モバイル通信>モバイル通信プランを追加 をタップするとQRコードリーダーが起動する。付与されたQRコードはほかの端末に保存しておくか事前に印刷しておき、読み取る。もしくは手動でSM-DP+アドレスとアクティベーションコードを打ち込む。うまくいくと、モバイル通信プランに新しい回線が追加され、既存の回線もあれば、主回線・副回線などのラベルがつく。

f:id:yururiman:20200104121754p:plain

国内ではこのような表示になった。このeSIMは国内での通信はできなかった。できるeSIMもあるはず。 

 

端末の設定:

アクティベーションだけではうまく通信できず、APNの設定も必要だった。

iPhoneの設定>モバイル通信>副回線(新しく追加した回線)>モバイルデータ通信ネットワーク>モバイルデータ通信のAPNを globaldata にする。

また、iPhoneの設定>モバイル通信のデータローミングをオンにすることも必要。

 

以上で通信できるようになるが、iPhoneの設定>モバイル通信>モバイルデータ通信のチェックが海外で使いたい回線についているかを確認。

 

f:id:yururiman:20200104122828p:plain

現地ではこのような表示となった。無事に使用でき、通信も快適であった。

 

感想

初めてのeSIM利用で、必要な設定がどれかを把握するのに多少手間がかかったが、次回以降はスムーズに利用できると思う。通信は快適で値段も安く、海外で通信環境を用意するには現状ベストな手段だと思われる。

ネット上のeSIMの情報はあまり多くない印象だが、上述のesimdbのブログで使用例やトラブルシューティングがあるので参考になる。

esimdb.com