アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル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

A 回答 (2件)

こんばんは。



>エクセルファイルにはversion1.x.x.xのような形式であらかじめ改訂番号入っていて、
それは、手で入れたものではないでしょうか?

>そのため目的としては参照を行ったBuiltinDocumentPropertiesと同じ場所に変更値を書き込みたいと思っております。

VBA側からは、数字というか、整数しか取り扱えないはずです。本来、VBAでは、BuiltinDocumentProperties は、読み取り専用にするのが一般的だっと思います。CustomPropertyは、マクロで使うための既定値のような使い方をします。
    • good
    • 0
この回答へのお礼

こんばんは。

>それは、手で入れたものではないでしょうか?
はい、バージョンはあらかじめ手で入れられたものだと思います。

BuiltinDocumentPropertiesで変更するのは無理そうですね。
別の方法を検討してみます。

ご回答ありがとうございました。

お礼日時:2010/01/09 20:12

こんにちは。



BuiltinDocumentPropertiesは、規定のものしか代入できませんので、CustomProperty を使ってください。
Type は、文字型にしなくては、"version" という文字データは入れられません。

'-------------------------------------------
'最初だけです。
Sub TestCustomsProperty()
  Dim i As Integer
  With ThisWorkbook.CustomDocumentProperties
    .Add Name:="改訂番号", _
    LinkToContent:=False, _
    Type:=msoPropertyTypeString, _
    Value:="version1"
  End With
End Sub
'-------------------------------------------
'2回目からは、
Sub AddPropertyNumber()
  Dim buf As Variant
  Dim i As Variant
  With ThisWorkbook.CustomDocumentProperties("改訂番号")
    buf = Replace(.Value, "version", "")
    i = CLng(buf)
    .Value = "version" & CStr(i + 1)
  End With
End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

この質問をしましたのは、複数あるエクセルファイルのプロパティ情報を
まとめて参照設定できるようなツールを作成したいためとなります。
そのため目的としては参照を行ったBuiltinDocumentPropertiesと
同じ場所に変更値を書き込みたいと思っております。
(エクセルファイルにはversion1.x.x.xのような形式であらかじめ改訂番号
入っていて、それを変更可能にしたいと考えています)

型に関して、以下のような数値でなく文字列として認識されそうな適当な数列でも
試してみましたが変更可能でした。
00000598765432109876543210987654321098765432109876543210987654321077777

意図を汲み取っていただき丁寧なコード作成ありがとうございます。
CustomPropertyの使い方等知らなかったため勉強になりました。

お礼日時:2010/01/06 17:47

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