
この記事ではExcelマクロを使ってBoxDriveのフォルダやファイルを開く方法を解説します!
最近ではBoxやGoogleドライブなどクラウド共有ファイルサービスが充実していますね。
私の会社でも最近は共有ドライブからBoxへの転換が主流になっています。
保存容量が無制限で改訂履歴も把握しやすく検索性に優れ、外出先でも手元のiPhoneやPCからアクセスできるため企業との相性がいいですね。
そんな中でBOXを使ってファイル管理が始まったために『BOXでVBAが使えないんですけど?』となっていませんか?
今回は『BoxDrive』を便利に活用する方法のひとつとして、ExcelのVBAを使ってBoxのフォルダ、ファイルを開く方法をご紹介します。
BoxDriveとは:
Boxには2種類の使い方があります。1つはWebブラウザ上で操作する『Box』とエクスプローラー方式の『BoxDrive』です。BoxはWebブラウザが開きますのでセキュリティの関係上サインインする必要があったリと何かと手間ですが、BoxDriveはエクスプローラー方式で操作できるため、これまでと同様の方法でフォルダを開くなどの操作ができます。
今回やりたいことはこちら!
ExcelのVBAを使ってBoxDriveのリンクを開く方法を解説します。
これまで共有ドライブなどへのリンク設定はフォルダパスをそのまま指定すればよかったのですが、BoxDriveではフォルダパスをそのまま指定しても上手くいきません。

その理由としてBoxDriveは『C:\Users\~』から始まるパスになっており『\~』の部分は個人で異なるためです。

同じファイルを開くときに、Aさんは『C:¥Users¥12345\fpath』、Bさんは『C:¥Users¥67891\fpath』となりリンクが上手くいきません。
そこで今回は個人で異なるフォルダパスを取得して誰でも同じファイルにリンクできるようにします。
今回解説すること
- ExcelのVBA(マクロ)でボタンを設置
※ボタン以外にもVBA内に組み込むことも可能です。 - クリックするとBOX内の指定フォルダ、ファイルが開く

\PCスキルが乏しい私が成長できた講座!/

BoxDriveのファイルを指定して開く方法
まずはBoxDrive内に格納されたファイルを指定して開く方法についてやり方を解説します。
分かりやすいようにボタンを押したらExcelファイルが開くように設定していきます。
コードをお求めの方はこちらをクリックして飛ばしてください!
※マクロを登録するExcelは事前にBoxに格納しましょう。
現在開いているExcelからファイルパスを取得するためです。
- ボタンを作成します。
開発タブの挿入>ボタン[フォームコントロール]をクリックしましょう。
※開発タブが無い人はこちらを参考にして表示させましょう。

- マクロの登録が開きますので新規作成をクリックしましょう。

- VBAの画面が開きますのでコードを入力しましょう。

BoxDriveのファイルを開くコード
コピー&ペーストして指定の位置を編集して使いましょう。
※コード修正履歴:
2022/7/21
num = Mid(ActiveWorksheets… →num = Mid(ActiveWorkbook
'----------------------------------------
BoxDriveのファイルを開くコード
num = Mid(ActiveWorkbook.Path, X,Y) '現在アクティブなシートのファイルパスを変数に代入
FPath ="C:¥Users¥" & num & "¥Box¥xxxx¥zzzz" 'ファイルのアドレスを変数に代入
Workbooks.open Filename:=FPath 'Boxのファイルパスを代入してExcelを開く
コードの解説
コードの意味と編集する箇所を解説しておきます。
下線の引いてある部分はあなたの使用環境に合わせて編集してください。
- num = Mid(ActiveWorkbook.Path, X,Y) ‘現在アクティブなシートのファイルパスを変数に代入
:現在のシートのファイルパスから個人のパス部分を抜き出します。
例)現在のパスが『C:\Users\123456789\Box\zzzz』
X= 10(パスの左から10番目を開始として)
Y= 9(9文字を抜き出す) - FPath =”C:\Users\” & num & “\Box\zzzz” ‘ファイルのアドレスを変数に代入
:変数に開きたいファイルのパスと先ほど取得した個人のパスを代入します。
例)開きたいアドレスが『C:\Users\123456789\Box\フォルダ1\フォルダ1-1\Excelシート.xlsm』
zzzzには\Box\以降のパス(フォルダ1\フォルダ1-1\Excelシート.xlsm)を入れてください。 - Workbooks.open Filename:=FPath ‘Boxのファイルパスを代入してExcelを開く
:先ほど設定したファイルパスを指定して開きます。
こちらは編集不要です。
\PCスキルが乏しい私が成長できた講座!/

BoxDriveのフォルダを開くコード
コピー&ペーストしてこちらも指定の位置を編集して使いましょう。
※コード修正履歴:
2022/7/21
num = Mid(ActiveWorksheets… →num = Mid(ActiveWorkbook…
'----------------------------------------
BoxDriveのフォルダを開くコード
num = Mid(ActiveWorkbook.Path, X,Y) '現在アクティブなシートのファイルパスを変数に代入
FPath ="C:¥Users¥" & num & "¥Box¥xxxx¥zzzz" 'ファイルのアドレスを変数に代入
CreateObject("Shell.Application").ShellExecute FPath 'Boxのファイルパスを代入してフォルダを開く
※コードの解説はこちらと同じです。
まとめ
以上でBoxDriveに格納されたファイル、またはフォルダを指定して開くことが可能になります。
BoxDriveが従来の共有フォルダと違ってリンクできないのは個人でファイルパスが異なるからでしたね。
ファイルパスが異なるのはBoxDrive自体はCドライブを使って動いているためでした。
このため、個人のファイルパスを取得するVBAコードがあれば、BoxDriveのリンクも開くことができるわけです。
以上の概念を理解してBoxDriveのリンクを取得してフォルダパスを指定してあげる事でBoxDriveでもリンクが開けるようになります。
言われてみれば簡単なことですがあまりネット上に情報が無かったのでまとめてみました。
ご参考になれば幸いです。
\PCスキルが乏しい私が成長できた講座!/

コメント
「オブジェクトが必要です(424)」のエラー
が出てしまうのですが、num FPathは何で定義すればよいでしょうか。
初心者ですみません、ご回答宜しくお願い致します。
お問い合わせありがとうございます!
すみません、コードの一部が間違っていることに気づきました…
最初の部分、ActiveWorksheetsではなくActiveWorkbookです。
num = Mid(ActiveWorkbook.Path,X,Y)
お手数かけますが、これで解決できるかご確認をお願いいたします。
迅速な回答ありがとうございます。
上記の方法で解決しました。
こちらこそ、記事を読んで実践していただいたお陰で間違いに気付けました。
検証してからアップするように心がけます。
今後ともよろしくお願いいたします。
すみません、
CreateObject(“Shell.Application”).ShellExecute FPath
のところで、sub functionが定義されていないというエラーが出てしまいます。
もしかするとEXCEL2013 64bit でやってることが原因でしょうか?
コメントありがとうございます。
うーん、こちらの原因は何でしょうね…
「sub functionが…」はスペルミスでも出るようですので
creまで手動入力して[Ctrl]+[Space]を押して、
リストからCreateObjectを選択していただけますか?
他の原因も探してみます。
すみません!
スペルチェックしてみたら間違ってました。お手間を取らせて申し訳ございません。
いえ!解決できてよかったです!