- ベストアンサー
VBAでエクセルのBOOKのプロパティを変更する方法を教えてください
- VBAを使用して、エクセルのBOOKのプロパティを変更する方法を教えてください。エクセル2013を使用しています。特定のフォルダ内のエクセルのBOOKの作成者を一括で変更したいですが、ファイルを開く必要があるため時間がかかると思います。手作業でプロパティを変える場合はエクスプローラの右クリックで簡単にできますが、VBAで開かずにプロパティを変更するにはどうすればよいでしょうか?
- エクセル2013を使用していますが、VBAを使って特定のフォルダ内のエクセルのBOOKの作成者を一括で変更する方法が知りたいです。ただし、ファイルを開かないとプロパティを変更することができないため、ファイル数が多いと時間がかかると思います。手作業でプロパティを変更する場合はエクスプローラの右クリックで簡単にできますが、VBAでファイルを開かずにプロパティを変更する方法を教えてください。
- エクセル2013を使用しています。特定のフォルダ内のエクセルのBOOKのプロパティの作成者を一括で変更するためのVBAのコードを教えてください。ただし、ファイルを開かないとプロパティの変更ができないため、ファイル数が多い場合に時間がかかることがあります。手作業でプロパティを変更する場合はエクスプローラの右クリックで簡単にできますが、VBAでファイルを開かずにプロパティを変更する方法はありますか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
VBAコアな機能より、FSOを使うことを考えた方がよいのでは。 ーー 適当な実例がないので、「設定」の方のテストをしてないが、参考に。 まずファイルプロパティ情報の「取得」で、WEB記事からのそっくり引用ですが Sub sample() 'OK Dim i As Long Dim strFile As String Dim strPath As String Dim obj As Object With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = "C:\" .AllowMultiSelect = False .Title = "フォルダの選択" If .Show = False Then Exit Sub End If strPath = .SelectedItems(1) & "\" End With Application.EnableEvents = False '起動時のOpenイベント等を停止 On Error Resume Next 'GetObjectで取得できないファイルの対策 strFile = Dir(strPath) i = 2 Do While strFile <> "" Cells(i, 1) = strFile 'ファイル名 Cells(i, 2) = FileDateTime(strPath & strFile) '更新日時 Cells(i, 3) = FileLen(strPath & strFile) 'サイズ Set obj = GetObject(strPath & strFile) If Err.Number <> 0 Then 'Officeのドキュメントではないということ Err.Clear Else Cells(i, 4).Value = obj.BuiltinDocumentProperties(3) 'Author Cells(i, 5).Value = obj.BuiltinDocumentProperties(7) 'Last Author obj.Close End If strFile = Dir() i = i + 1 Loop Set obj = Nothing Application.EnableEvents = True End Sub これは、エクセル・シートに情報を書き出すのはテスト済み。 このコードではそのファイル(ブック)を開いてはいるが、画面に出してない、と思う。処理時間が少なくて済むようだ。 ーー もう一つWEB記事 https://excelwork.info/excel/builtindocumentproperties/ の <設定> object.BuiltinDocumentProperties ( title ) = string という解説を注目して、その後の 「サンプルVBAソース」を参考にして、 前記の情報「参照」のコードの例えば、 Cells(i, 4).Value = obj.BuiltinDocumentProperties(3) 'Authorのところを obj.BuiltinDocumentProperties(3)=”山田 太郎" のように、「設定」にして、実行してみてはどうだろう。 そして、前記のコードで、「変更」設定を確認すると安心です。
お礼
お礼がおそくなり申し訳ありません。 (寝込んでました) FSOでも開いて保存であることにかわりませんがありがとうございました。 その前にもっと問題が発生してしまいました。 わたしにコードでもimogasiさんのコードで「設定」にしたものでもプロパティが変更できないファイルがいくつかあるのです。現在原因を探っていますのでこの質問はいったん保留にさせてください。
お礼
HohoPapa さん、いつもお世話になりありがとうございます。 なるほど。全部選択して一括で変更できるとは存じませんでした。 とても勉強になりました。ありがとうございます。 ただ、できればVBAでのやりかたもできれば知りたいと思います。(作成者の変更以外にいろいろありますので)