• ベストアンサー

VBA 文書プロパティ一括削除(Word)

Wordの[ファイル]→[プロパティ]の「作成者」や「会社名」「タイトル」等を一括で削除することは可能でしょうか? Sub プロパティ削除() ActiveDocument.BuiltInDocumentProperties(Author) = "" End Sub 上記のようにすると「作成者」は削除できるんですけど、「Author」の部分を変えて「タイトル」や「会社名」を削除するしかないでしょうか? 全てのプロパティを簡単に削除するコードはありますか? よろしくお願いいたします。

  • kiki7
  • お礼率86% (57/66)

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 >「プロパティの全て」というふうにできるでしょうか? 「Count」を使ってプロパティの数をカウントしてみましたが、それはできないようで・・・。 エラートラップはしてありませんが、一度で試してみてください。特別な設定していない限りは、全て通るはずです。ドキュメントのバイト数などは再取得されるようですね。 しかし、これでは、原作者名は消えません。その場合は、やはり、『隠しデータの削除』を使うか、もしくは別のマクロとActive X コントロール(Dsofile.dll)が必要になるのではないかと思います。それは、やってみないとわかりません。 Sub プロパティ削除r() Dim v As Variant For Each v In ActiveDocument.BuiltInDocumentProperties  If v.Type = msoPropertyTypeString Then     v.Value = ""  ElseIf v.Type = msoPropertyTypeNumber Or v.Type = msoPropertyTypeDate Then     v.Value = 0  End If Next v  ActiveDocument.Save End Sub

kiki7
質問者

お礼

Wendy02さん、ありがとうございました。 教えていただいたコードで解決しました! コードの内容はなんとなく分かる程度ですが、頑張って勉強します。

その他の回答 (5)

回答No.6

ANo.1です >試していますが、削除できません。 これは以下のURL先にあるオプションの項目にチェックを入れるマクロ です。([保存時にファイルのプロパティから個人情報を削除する]) http://support.microsoft.com/kb/899877/ja ですから、マクロを実行してチェック項目をオンにしないと意味が無い ものですね。 マクロを書いて保存しただけではチェック項目がオンになっていません から削除されないのです。マクロをお尋ねだったのでヘルプにあるもの を載せましたが、実際にはオプションの項目をオン/オフするだけです から、削除をするマクロという意味では、Wendy02 さんの提示したもの ぐらいしかないのでしょうね。(私も勉強中ですがいまだ向上せず)

kiki7
質問者

お礼

>ですから、マクロを実行してチェック項目をオンにしないと意味が無いものですね 今度はうまくいきました。ありがとうございました。 >(私も勉強中ですがいまだ向上せず) 私も勉強中です。早く回答できるくらいに成長したいものです。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

> なぜだかダウンロードできませんでした そうですか。。残念です。 オフィスのファイルには、プロパティーの他、様々な場所に 個人情報が埋め込まれてしまいます。例えば、マクロの記録を すると、   ' Sample Macro   ' マクロ記録日 : 2007/5/29 ユーザー名 : Administrator のような個人情報(ユーザー名に本名を入れていたりした場合) が記録されてしまいます。このツールはこのようなことろまで スキャンし、削除してくれるので、データ提出時になにかと重宝 するんですが.... > コードを知りたいのですが・・・。 残念ながらコードは公開されていません。

kiki7
質問者

お礼

>このツールはこのようなことろまで スキャンし、削除してくれるので、データ提出時になにかと重宝 するんですが.... なるほど・・・。コードは公開されていないようなのは残念ですが、 便利そうですね。 Office2002が一部インストールしているために今回は使用できなかったので、また別の機会に使ってみようと思います。 No.3の方の回答で解決しましたが、後は回答順にポイントを付与します。 ポイントは付与できませんが、ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 一応、5まででよいと思います。 試してみてください。なお、これは、Normal.dot 側に入るものだと思います。 Sub プロパティ削除() Dim i As Integer For i = 1 To 5  ActiveDocument.BuiltInDocumentProperties (i) ="" Next i End Sub これとともに、ツール-オプション-保存 □保存時にプロパティを確認する にチェックを入れておくとよいと思います。

kiki7
質問者

お礼

Wendy02さん、ありがとうございます。 For i = 1 To 5でできました! ところで、「5」の部分を、数字ではなく、「プロパティの全て」というふうにできるでしょうか? 「Count」を使ってプロパティの数をカウントしてみましたが、それはできないようで・・・。 他に「For each・・・Next」を使用する方法を試みていますが、どうもうまくいきません。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんばんは。 Office2003/XP 限定ですが、MS 公式のツールが公開されてますよ。 http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=144E54ED-D43E-42CA-BC7B-5446D34E5360

参考URL:
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=144E54ED-D43E-42CA-BC7B-5446D34E5360
kiki7
質問者

お礼

KenKen_SPさん、ありがとうごじます。 なぜだかダウンロードできませんでした(/_;) Office 2003と同時にOffice2002のPPTを入れていて(Wordは入れていない)、そのせいで製品の確認に失敗してしまいました。 このツールはコードを確認できるのでしょうか? 今回のマクロは勉強のために作成しているので、コードを知りたいのですが・・・。

回答No.1

Sub RemovePersonalInfo()  ThisDocument.RemovePersonalInformation = True End Sub 「 RemovePersonalInformation 」でVisual Basicのヘルプを参照すれば 出てきます。

kiki7
質問者

お礼

enunokokoroさん、ありがとうございます。 コメントや変更履歴のユーザー情報を削除するプロパティのようですね・・・。試していますが、削除できません。コードはヘルプどおりなので、問題ないはずですが。。。 もうちょっと試してみます。

関連するQ&A

  • VBAでWORD97のプロパティの書換について

    はじめまして。 質問なんですが、 VBAでWORD97のプロパティを書換プログラムで困っている点があります。 プロパティのタイトル(title)、サブタイトル(subject)、 作者名(Author)は、書換に成功したのですが、 管理者、会社名の書換が出来なく困っています。 あと、VB6でワードを読み込むための方法も教えていただければ幸いです。 当方は、初心者なので分からないことが多いので、 詳しい方、教えて下さい。 よろしくお願いいたします。

  • ワードのプロパティの消し方を教えてください。

    教えてください。 ワード、エクセルで作成した書類のプロパティ→概要に残る作成者などまでは消せるのですが、その先の、 「概要」のページ右下にある「詳細設定」画面の作成者、会社名などどうやって消せばいいのかわかりません。 もし消せたとして、一括削除はできるのでしょうか? どなたか教えてくださると大変助かります。どうぞ宜しくお願いします。

  • word VBA ファイル名 保存

    wordで作成したファイルの最初の第1行名をファイル名として、名前を付けて保存できるマクロを作りたいのですが、うまくいきません。 Sub 保存() Dim ファイル名 As Variant ファイル名 = ActiveDocument.Paragraphs(1) & ".docx" ActiveDocument.SaveAs FileName:=(ファイル名), FileFormat:= _ wdFormatXMLDocument End Sub ではだめなのですが、どなたか添削よろしくお願いします。困っております。なにぶん初心者ですので基本的な文法のミスかもしれないですが、うまくいきません。

  • ワードアートの一括変換

    Office2003のEXCEL使用しています。 ワードアートのフォントを別のモノに 一括変換したくて調べたら、 VBA のコードを実行すればOKと書いてありました。 以下文章。 1. Microsoft Word の「Visual Basic Editor」を起動。 2. [挿入] - [標準モジュール] を選択。 3. 下記のコードを貼り付け。 4. [実行] - [Sub/ユーザー フォームの実行] を選択。 これで、ワードアートのフォントが一括で置換出来る。 Sub ChangeWordArtFont()   ' ワードアートのフォントを変更(書式が「行内(インライン)」の場合)   Dim inlineShape   For Each inlineShape In ActiveDocument.InlineShapes     If inlineShape.Type = wdInlineShapePicture Then       inlineShape.TextEffect.FontName = "HG創英角ポップ体"     End If   End If      ' ワードアートのフォントを変更   Dim shape   For Each shape In ActiveDocument.Shapes     If shape.Type = msoTextEffect Then       shape.TextEffect.FontName = "HG創英角ポップ体"     End If   Next End Sub この通りにやったのですが、エラーが出て完了できません。 構文が間違っているのでしょうか?

  • VBAでBOOKを開かずにプロパティ変更

    エクセル2013です。 特定のフォルダ内のエクセルのBOOKのプロパティの作成者をすべて変えようと思います。 いろいろ試して、以下のコードでできるようになりました。 しかし、下記のコードではいちいちファイルを開かなくてはなりませんのでサイズが大きかったり、数が多いと結構時間がかかります。 手作業でファイルのプロパティを変えるときは、エクスプローラで右クリックすれば開かなくとも簡単にできます。VBAでもファイルを開かずにプロパティを変更するにはどうすればよいのでしょうか?お教えいただければ幸いです。 Sub TEST20190710()   Dim myFdr As String, fnm As String   Dim wb As Workbook   Dim n As Long   Const NEW_AUTHOR As String = "emaxemax"      Application.ScreenUpdating = False   Application.EnableEvents = False   myFdr = "C:\Users\User\Documents\TEST01"   fnm = Dir(myFdr & "\*.xls?")   Do Until fnm = Empty     Set wb = Workbooks.Open(myFdr & "\" & fnm)     Application.DisplayAlerts = False     wb.BuiltinDocumentProperties("Author").Value = NEW_AUTHOR     wb.Close SaveChanges:=True     Application.DisplayAlerts = True     n = n + 1     fnm = Dir   Loop   Application.ScreenUpdating = True   Application.EnableEvents = True   MsgBox n & "件のブックを処理しましました。", vbInformation End Sub

  • word ユーザープロパティをマクロで設定したい

    word2003を使っています。 100以上の文書にユーザープロパティを設定することに なり、マクロで設定したいと思っています。 自分でマクロを記述してみましたが、うまくいきません。 どこをどう直したらいいか、わかる方、教えてください。 Sub Macro1() ActiveDocument.CustomDocumentProperties.Add _ Name:="A", _ LinkToContent:=False, _ Type:=msoPropertyNumber, _ Value:="0" ActiveDocument.CustomDocumentProperties.Add _ Name:="B", _ LinkToContent:=False, _ Type:=msoPropertyNumber, _ Value:="1" End Sub

  • エクセルVBAでワード文書印刷(2)

    先日、こちらで、VBAを記述したエクセルのブックと同一フォルダーにおいておいたABC.DOCをプリントし、ABC.DOCを閉じる方法を教えていただき、Excel2003でためしたら、下記でうまくいきました。(その際、回答者のchie65536さん、手が滑ってポイントをつけず締め切ってしまいました、申し訳ございません。) ところが今、会社のExcel2000でやったところ、「印刷中です。Wordを終了すると印刷待ちのすべてのジョブがキャンセルされます。」と出てしまいます。 ABC.DOCをプリントしおわったら、ABC.DOCを閉じ、ワードを終了するようにしたいのです。 ためしに、wd.Quitの代わりに、wd.ActiveDocument.Close とすれば印刷はされましたが、ワードが終了しません。 wd.ActiveDocument.Close のあとに wd.Quitを入れると、「印刷中です。Wordを終了すると・・・・」が出てしまいます。 どうなおせばよいのでしょうか? Sub Word_Print() Dim wd As Object Set wd = CreateObject("Word.application") wd.Visible = True wd.documents.Open Filename:=ThisWorkbook.Path & "\ABC.doc" wd.ActiveDocument.PrintOut wd.Quit Set wd = Nothing End Sub よろしくお願いいたします。

  • WORD2003の文書のプロパティに関して

    WORD2003の文書のプロパティに関して2つ質問します。 (1) ファイルの概要 新規文書開き、ここファイルの概要を見ると会社名のところに会社名がABCDE会社と入っているのですが、この会社名をEFG会社と変更する操作はどうすればいいか。 (2) ファイルの構成 ファイルの構成 というのがありますが、使い方と利用目的がわかりません。どのような目的で利用するのでしょうか。

  • エクセルVBAのプロパティ設定について

    エクセルVBAのプロパティ設定について VBAでエクセルのメニューのファイル→プロパティ→詳細情報 にある改訂番号を変更したいのですがうまくできません。 以下、ソースの内容です。 Sub Sample() On Error Resume Next '整数値は問題なく変更可 ' ThisWorkbook.BuiltinDocumentProperties("Revision Number").Value = "1" '通常文字は変更不可 ThisWorkbook.BuiltinDocumentProperties("Revision Number").Value = "version1" ThisWorkbook.Save End Sub 改訂番号を整数値にすると変更できるのですが通常文字(アルファベット)を 含めるとエラーとなり変更できません。 エクスプローラ等でファイル右クリックからプロパティ-概要を開いて編集する分には アルファベットを含んでいても問題ないため、整数値しかできない等の制約は ないと思ったのですが。。 もし思い当たる原因や対策等何かありましたらご教授お願いいたします。 環境は以下になります。 OS:Windows2000,XP Excel:Office2003

  • Word_VBA 拡張子手前までのファイル名の取得

    こんにちは。VBA全般初心者です。Wordに対していくつかの処理後、元ファイルに日付(年月)をつけて別保存というマクロを作ろうとしています。現在下記で作成中ですが、これだと元ファイルの.docxもファイル名として認識されており、ABC.docx → ABC.docx.2023_05.docxと保存されます。 ABC2023_05.docx にしたいです。 Sub ファイル名取得して保存() Dim タイプ As Variant Dim 区切り As String Dim ドット位置 As Integer Dim 日付 As String Dim ファイル名 As String Dim タイトル As String '拡張子を定義 タイプ = ActiveDocument.name 区切り = "." ドット位置 = Len(タイプ) - (InStrRev(タイプ, 区切り)) タイプ = Right(タイプ, ドット位置 + 1) 日付 = Format(Date, "yyyy_mm") タイトル = ActiveDocument ファイル名 = Application.PathSeparator & タイトル & 日付 & タイプ With ActiveDocument .SaveAs FileName:=.Path & ファイル名 End With End Sub

専門家に質問してみよう