プロが教える店舗&オフィスのセキュリティ対策術

Googleドライブファイルストリームを利用しており、

Windows10のエクスプローラから、ローカルパスでも開けるし、
Chromeのブラウザからでもフォルダを辿れば同じファイルをスプレッドシートで開けるのですが、
Excelを意識してマクロ等設定している場合、スプレッドシートで編集されてしまうと、マクロ等が壊れないか心配してます。(試してみれば良い話ですが、まだ試せてません、すみません)
但し印刷の設定等は崩れしまうらしいです。

ブラウザからアクセスできるのは便利なのですが、ファイルによってはExcel以外から開いて欲しくない場合、何か方法は無いでしょうか?

質問者からの補足コメント

  • うれしい

    すみません。お礼した後の補足ですが、
    マクロ実行後、数分操作ができなかったのですが待っていると、
    「別のプログラムでのOLEの操作が完了するまで待機します。」というダイアログが出ました、
    OKかキャンセルのボタンでしたので、OKをクリックすると期待していたExcel出力の動作が実行されました。
    ダイアログが出る場合があるという差のみなのかもしれません。
    バイナリブックの詳細が気になります・・・
    また名前を付けて保存で、マクロブックで保存しなおせば元に戻るんでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/11/29 10:33

A 回答 (6件)

No.1~5です。



>ファイルを書き出すとき、「& ".xlsm"」で保存してます。・・・
>そこが引っかかってましたが、「& ".xlsb"」にしたら正常に動作しました。

>マクロで行っているのは、表示しているシートの「ある列」の値単位で
>フィルタした表を、指定フォルダに保存していく処理です。

余計なお世話ですが、上記の分割保存処理を、ご質問者がこのサイトのご質問され、Qchan1962さんが回答されたVBAで処理されておられるなら、拡張子だけでなく定数も修正する必要があります。

「& ".xlsm"」を「& ".xlsb"」に修正しておられるようですが、「& ".xlsm", 52」の部分を「& ".xlsb", 50」に修正してみてください。
    • good
    • 0
この回答へのお礼

お恥ずかしい事に「, 52」の意味など考えておりませんでした。
ありがとうございました!

お礼日時:2021/12/01 14:00

No.1~4です。



>マクロで行っているのは、表示しているシートの「ある列」の値単位で
>フィルタした表を、指定フォルダに保存していく処理です。

そのVBAマクロも私がこのサイトであなたに回答したものです。

>結論としては、OLEメッセージが出るのは、Gドライブに置いてあるとき
>みたいです。

想定どおりです。

だとすると、Googleドライブファイルストリームの仕様か設定に拘る問題だと思われますので、Googleドライブファイルストリームの環境を持たない当方からこれ以上アドバイスすることは困難です。

Googleドライブファイルストリームの仕様か設定に詳しい方からのアドバイスを期待するしかありません。

しかし、このご質問に月~金まで回答がつかなかったという事実を考えると難しいかも知れませんね。
    • good
    • 0

No.1、2、3です。



>理想通りの挙動です。

おめでとうございます。

>マクロの動作が不明(一見動作しないと思った処理が、時間がかかった後動作してた)

前回回答でも述べましたが、.xlsb形式のファイルは「個人用マクロブック」や「自動回復機能」で用いられるファイル形式なので、EXCEL側の挙動は、基本的に.xlsm形式のファイルを開くときと同じだと思います。
そこで、試して欲しいことがあります。

ご質問者の環境にローカルドライブがあるのなら、ファイルストリームで.xlsbファイルを一旦ローカルドライブにコピーしてからEXCELで開いたらどういう挙動になるのでしょうか。
もっとも、セキュリティの問題でローカルドライブが許可されていない環境だと試しようもありませんが・・・

仮に、ローカルドライブからのオーブンが試せないときは、ファイルストリームから当該ファイルを右クリックして、「プログラムから開く」を選択し、さらに「Excel」を選択して起動してみてください。
これで、どのような挙動になるか確認してください。

上記2つのいずれかを試して
(1)ローカルドライブから開く
(2)「プログラムから開く」で開く

(1)(2)とも、

>「別のプログラムでのOLEの操作が完了するまで待機します。」という
>ダイアログが出ました

という結果になるのか教えてください。
    • good
    • 0
この回答へのお礼

マクロで行っているのは、表示しているシートの「ある列」の値単位でフィルタした表を、指定フォルダに保存していく処理です。
書き出し先はGドライブ内です。約15ファイル生成されます。

まず最初に何だかよく分からなくなった点ですが、
最初はGドライブのまま、オリジナルのファイル(xlsm)を試しに実行してみたら、OLEメッセージが出ました。
キャンセルしたら処理が開始され、処理全体にかかったのは約2分です。
閉じるボタンを押したとき「保存しますか?」と聞かれず閉じれてしまいました。
再度開いてマクロを実行すると今度は普通に処理完了し、19秒で完了(本来の処理時間です)

次にデスクトップにコピーしそれを実行すると、OLEメッセージは出ず、
上記と同じく正常処理完了しました。約19秒。

今度は、Gドライブでxlsbを開いて試しました。(ダブルクリックも右クリック→プログラムで開くでも同じ挙動です)
しょっぱなから別の理由でエラーが出ました。

ファイルを書き出すとき、「& ".xlsm"」で保存してます。そうしないと拡張子なしのファイルになってしまうので。
そこが引っかかってましたが、「& ".xlsb"」にしたら正常に動作しました。
ここから本番です。
OLEメッセージでOKを選んだら、2分おきに1ファイル書き出される動きで相当待たされました。

-----------
長くなってすみません。
結論としては、OLEメッセージが出るのは、Gドライブに置いてあるときみたいです。
デスクトップから実行したら起きてないです。しかし両方とも書き出し先はGドライブです。
デスクトップ上で実行すれば問題なさそうですが、少し困るとしたら、
書き出しファイル名ですが。どれもスプレッドシートで開くのを防ぐと割り切ればいいんですかね・・・

お礼日時:2021/11/30 11:27

No.1、2です。



>バイナリブック形式だとマクロも動作するようですが、どういう用途の
>形式なのでしょうか?

xlsb形式で代表的なものは、個人用マクロブックです。

VBAを利用される方はご存じだと思いますが、VBE(Visual Basic Editor)の画面を開くと、左側に開いているブックとは別のVBAProject(PERSONAL.XLSB)というProject名が表示されていることがあります。
これは、「個人用マクロ」を登録するための非表示のブックです。

以下のURLに「保存しないで閉じてしまったブックの回復方法」が記載されています。
https://atmarkit.itmedia.co.jp/ait/articles/1709 …

説明によると、自動回復機能で保存されたブックは、デフォルトでは「%userprofile%\AppData\Roaming\Microsoft\Excel\」というパスに、オリジナルのファイル名に数字が付いた名前でxlsbファイルとして保存されます。

つまり、xlsb形式は自動回復機能でも用いられる形式です。
    • good
    • 0
この回答へのお礼

そうですね!
そういえばどっかで見たことのある嫌な感じのファイルだなと思ったら、、、
突然強制終了したり、PCがフリーズした時に、さっきのExcelを開くと、
回復用とか言って直前の状態が運よく残ってた時に開く形式でした。
バイナリブックという、自分で保存できる形式だったんですね。
ありがとうございます。(No.4にも後程回答します)

お礼日時:2021/11/30 11:10

>「ファイルをプレビューできませんでした」という表示が出て開けないよう


>になりました。

Googleドライブファイルストリームでもバイナリ形式のEXCELファイルは直接オープンできないようですね。

>拡張子を手動で変更するのではなく、名前を付けて保存で「バイナリブッ
>ク」で保存すると自動的にxlsbになりました。

正しい対応方法だと思います。

>名前を付けて保存で、マクロブックで保存しなおせば元に戻るんでしょう
>か?

Googleドライブファイルストリームでの挙動は検証できませんが、一般的にはバイナリ形式で保存された(.xlsb)ファイルは、マクロ有効ブック(.xlsm)形式で保存し直せば、普通にマイクロ有効ブックとして機能すると思います。

保存形式の拡張子ごとの特徴の解説は以下で↓
https://qiita.com/kaizen_nagoya/items/bc9cf55719 …
    • good
    • 0
この回答へのお礼

私の説明が悪かったようなので補足修正します。

>Googleドライブファイルストリームでもバイナリ形式のEXCELファイルは直接オープンできないようですね。

いいえ。ファイルストリームからならちゃんと開けました。
ファイルストリームはローカルディスクと同様にするツールで、
例えばG:ドライブとして扱えます。
Googleドライブでは、ブラウザ上からフォルダを開いていくパスが、
G:¥マイドライブ¥〇〇〇¥△△△△¥ドライブ¥test.xlsb となります。

結論としては、xlsbにしておくと
・Googleドライブ(ブラウザ経由)だと、ファイル形式が認識できず、開けませんでした。
・ファイルストリーム(エクスプローラ経由)だと、普通に開く事が出来ました。

理想通りの挙動です。
ただし、時間が足らないてめ解明しきれてないのは、
マクロの動作が不明(一見動作しないと思った処理が、時間がかかった後動作してた)
詳しいご経験をお持ちの方、情報を頂けると幸いです。

お礼日時:2021/11/30 07:45

回答がつかないようですね。



当方にはGoogleドライブファイルストリームの環境がないので、検証しようがないのですが、思いつくことを述べます。

マクロ入りのEXCELファイルの拡張子は.xlsmですが、これを.xlsb形式のファイルとして保存しておくと、Googleドライブの場合はGoogleスプレッドシートで開こうとすると「ダウンロード」を促され、そのまま開くことはありません。

Googleドライブファイルストリームでの挙動が不明ですが、同じように拡張子.xlsmのファイルを.xlsb形式のファイルとして保存することで、「Excel以外から開いて欲しくない」が実現できる可能性があります。

ただし、仮に「Excel以外から開いて欲しくない」が実現できたとして、そのメリットとxlsb形式で保存することのデメリットも当然あると思われるので、メリット・デメリットを天秤にかけて、本当に意味があるのか十分検証する(当方ではできませんので、ご自身で検証する)必要があると思われます。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます。
拡張子を手動で変更するのではなく、名前を付けて保存で「バイナリブック」で保存すると自動的にxlsbになりました。
Googleドライブで開こうとしたら、
「ファイルをプレビューできませんでした」という表示が出て開けないようになりました。→成功です

ファイルストリーム上からは、普通に開く事が出来て、マクロも動作しました。。。と思いきや、別フォルダにExcel形式で書き出すマクロはエラーが出ました。
この辺が、回答者さんが気にしていた部分なのだと理解しました。
マクロの動作の種類によって異なりそうなので、必ずマクロ毎にテストをしてみての判断になりますね。
バイナリブック形式だとマクロも動作するようですが、どういう用途の形式なのでしょうか?具体的にご存じの範囲で教えて頂けると助かります。

お礼日時:2021/11/29 10:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!