[[20160614130055]] 『FileDialogで選択したフォルダの読み取り専用を解』(kesa) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『FileDialogで選択したフォルダの読み取り専用を解除したい』(kesa)

msoFileDialogFolderPickerで選択したフォルダが読み取り専用になっていてエラーになってしまいます。

色々自分で調べてみて、
Folder.AttributesやSelectedItems(1)などを使えばよさそうなのですが、うまく組み合わせできません。

With Application.FileDialog(msoFileDialogFolderPicker)

                .Filters.Clear
                .InitialFileName = ThisWorkbook.Path

この後に何を記述すればよいでしょうか。

よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows8 >


 書きこみましたが 質問の意味を取り違えていたので、いったん取り消します。

(β) 2016/06/14(火) 13:16


 再掲します。

 読み取り専用にする必要があるから、そうなっていると思うのですが、やりたいことは
 読み取り専用フォルダ内のブックを変更して更新したいということですか?

 それが適切なことなのかどうかは、こちらでは判断できませんが、ブックの属性の変更については

http://www.officetanaka.net/excel/vba/filesystemobject/file01.htm

 あたりが参考になりませんか。(やったことがないので、できるかどうかは ?? です)

(β) 2016/06/14(火) 13:34


コメントありがとうございます。
私の説明が不十分でしたので補足いたします。

Excelデータを集計するためのマクロを作っており、
msoFileDialogFolderPickerでフォルダを選択してその中のExcelを転記しようとしています。
ところが、そのフォルダの属性が読み取り専用になっており、
(選択したフォルダ名)にアクセスできません。読み取り専用または暗号化されています。
とエラーが出てしまいます。

そこでmsoFileDialogFolderPickerでフォルダを選択した後にフォルダの属性を書き換えたいです。

Sub 集計()
Dim ~

(略)

With Application.FileDialog(msoFileDialogFolderPicker)

                .Filters.Clear
                .InitialFileName = ThisWorkbook.Path

If .Show <> -1 Then Exit Sub

(転記処理)

End Sub

大枠はこのような形となっております。
宜しくお願いします。
(kesa) 2016/06/14(火) 13:36


http://officetanaka.net/excel/vba/filesystemobject/folder01.htm

フォルダーの属性はこれが使えそうなのですが、
これをmsoFileDialogFolderPickerでフォルダ選択した際に、
どのように書き換えればいいかが思いつかない状態です。
(kesa) 2016/06/14(火) 13:41


 このあたりは詳しくないので上級者さんの回答をお待ちください。

 フォルダ属性の変更そのものは

http://faq.epsondirect.co.jp/faq/edc/app/servlet/qadoc?011423

 あたりで操作手順が記載されています。

 そもそも、そのフォルダを読み取り専用解除をしたらいいのでは? と思うのですが、
 一方で 読み取り専用ということは 読み取りはできるのでは?(やったことがないので、わかりませんけど)

 隠しフォルダとか、そういった特殊なフォルダではないのですよね?

 ところで、後学のため 教えてください。
 エラーは、いつ発生するのですか?
 ダイアログ上で、フォルダを選択した時に発生するのですか?

(β) 2016/06/14(火) 13:56


色々とありがとうございます。

おっしゃる通りフォルダ属性をVBAで変更せずにCmdで変更すれば良い話なのですが、
指定するフォルダは頻繁に変わってしまう上に、
また実際にこのVBAを実行するのは別の方になるので、
わざわざ毎回Cmdで変更してもらうのが手間になってしまうのでできればVBAで処理したいという内情があります。

エラーはフォルダを選択した後に発生します。
(kesa) 2016/06/14(火) 14:06


現在の属性の取得は、GetAttr 関数、属性の変更は、SetAttr ステートメント、で出来る。
詳しくはヘルプ参照。

(とおりすがり) 2016/06/14(火) 16:02


コメントありがとうございます。
GetAttr,SetAttrはファイルの属性みたいですね。
フォルダの属性を変更したいです。
(kesa) 2016/06/14(火) 16:25

 その、選ぼうとしているフォルダは、どんなフォルダなんでしょうか。
 当方、PC環境として、ごくごく普通の設定をしており、読み取り専用フォルダなんてものは
 扱っていないのですが、そちらでは、そういうフォルダが、たくさんあるのでしょうかね。

 で、その中には当然ブックがあるんだと思いますけど、なぜ、そんなフォルダにして、そこにブックをいれてあるのですか?

 当然、そのフォルダは、マクロではなく、エクスプローラで表示させて選んでもエラーになるんですよね。
 そういうフォルダにしている意図は、何かあるんでしょうね?

 仮に、VBAで、そのフォルダの属性を変更できたとします。
 それって、いいのでしょうか? 何か理由があるからそういう設定にしてあるとすると、勝手に、それを変更してもいいのですか?
 で、いいんだということなら、最初から、そういう設定じゃない通常のフォルダにしておけばよろしいのでは?

(β) 2016/06/14(火) 17:28


 エクスプローラでのフォルダへの読み取り専用のチェックはフォルダそのものの属性の変更ではなくフォルダ内の
 ファイルをまとめて読み取り専用にするものではないか。

 そもそも読み取り専用のフォルダとはどのようなフォルダなのだろうか?
(ねむねむ) 2016/06/14(火) 17:52

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.