表示カスタムドキュメントプロパティの値をExcel2007年のワークシートの細胞
-
13-09-2019 - |
質問
私がプログラムを作成し、populatesカスタムドキュメントプロパティにはエクセル2007年のワークブックファイルです。しかししていきたい表示このプロパティの値は、ワークシート。ワ2007年だけを選択"挿入->ク部品>フィールド..."を使用しDocProperty分野の値のカスタム項目を関連付けます。しかしまだ見ることが可能なExcel2007年.
なんか値を表示するカスタムドキュメントプロパティは、Excelワークシートすることは可能です。いう解決策、2007年に解決した。私は使用しないでマクロ-カスタムコードです。
解決
残念ながら、私は、ユーザー定義関数を使用する必要があると考えています。あなたのワークブックに新しいVBAモジュールを追加して、この機能を追加します:
Function DocumentProperty(Property As String)
Application.Volatile
On Error GoTo NoDocumentPropertyDefined
DocumentProperty = ActiveWorkbook.BuiltinDocumentProperties(Property)
Exit Function
NoDocumentPropertyDefined:
DocumentProperty = CVErr(xlErrValue)
End Function
Application.Volatile
の呼び出しは、セルが、それは、文書のプロパティの変更を拾うことを確実に各再計算に更新されるように強制します。
他のヒント
Excelで同等の式を経てだろうと私はそれがコードなしでドキュメントプロパティを抽出することが可能だとは思いません。ドキュメントプロパティを取り出すためのネイティブ機能はありません。 (代替式を介してアクセス可能であるワークブック/ワークシート名の情報を格納することができる)
VBAでは次のような機能のものを作成する必要があると思います
Public Function CustomProperty(ByVal prop As String)
CustomProperty = ActiveWorkbook.CustomDocumentProperties(prop)
End Function
、次いで=CustomProperties("PropertyName")
有する式でそれを呼び出します。
別の微妙なポイントがあります。式の依存関係のみ、他のセルに関連します。この式は、カスタムプロパティに依存します。カスタムプロパティを更新する場合はCustomProperty
を含む既存の数式が自動的に更新されることはありません。セルは、手動で再評価またはブック全体を再計算によって強制的にする必要があります。あなたの最善の機会は、式は、すべての細胞の変化にrecalc'dされるだろうことを意味する、関数は揮発性にするだろう - しかし、これはまだセルが変更された場合にのみアップデートを得ることを意味します。
あなたが抽出したいセルを選択します いくつかの有用な細胞に名前を変更します。 "PROJECT_NUMBER" を "B1" から。 「アドバンスプロパティ」「カスタム」タブをクリックして開きます。新しいプロパティの名前を入力します。 「価値」から選択セル名「コンテンツへのリンクを」クリックリストをプルダウンます。
私は私がcerditを取ることがしたいが、私は、オンラインで答えを見つけました: ます。http:// pdmadmin。 COM / 2012/03 /表示 - カスタムプロパティ値・イン・エクセル・使用して、名前のレンジ/ の
リンクしていただいて構いません指定範囲をカスタムプロパティが、その後、カスタムプロパティの値は、[初のセ]の範囲です。での効果的に読み;、内容を変更することができ、細胞の更新になる。
いすいようにしたいのですが、使用する場合のプロパティの値を、できない カワークシート機能 います。
私は他の人が持っている同じ問題を経験しています。だから私は、包括的に私はそれに対処方法をカバーしようとします。
すべてのまず、あなたがカスタムに置くか、または内蔵の財産及びそれにこの方法を指すように「問題」のセルを作るものは何でも得ることを意図関数を書くよりも、他のオプションが用意されていません。
=yourPropertyGettingFunctionName(PropertyName)
PropertyName意味カスタム/組み込みのプロパティ値あなたがセルに表示したいの名前を参照する文字列であること。
:(以前示唆されるように)関数は、のように書くことができます
Public Function StdProp(ByVal sPropName As String) As String
Application.Volatile
StdProp = ActiveWorkbook.BuiltinDocumentProperties(sPropName).Value
End Function
組み込みプロパティの、又は
Public Function UsrProp(ByVal sPropName As String) As String
Application.Volatile
On Error GoTo UndefinedProp
UsrProp = ActiveWorkbook.CustomDocumentProperties(sPropName)
GoTo Exit
UndefinedProp:
UsrProp = "n/a"
Exit:
End Function
既にApplication.Volatileは、半自動セルの内容の更新を可能にするなど、上述したように
しかし、これは自分自身で問題を提起:あなたのExcelファイルを開くたびに、そのような関係を使用しているすべてのセルが更新されますと、あなたがファイルを終了する時点で、Excelはそれを更新するためにあなたの許可をお願いしますエクセル自体がなかったので、どんなにあなたは、その上の任意の変更を導入したりしていない場合ます。
私の開発グループでは、バージョン管理システムとしてSubversionを使用しています。ケースで誤って終了時に「アップデート」をヒット、SVNはそれに気づくと、あなたの変更をコミットする次の時間になる、Excelファイルは、パックに含まれます。
だから私は、同時に、私は必要なものは何でもして避けるために、手で、私はしたくなかった。この自己更新効果をすべてのものを使用することを決定します。
機能/ sのアクセスプロパティとの組み合わせで名前付き範囲を使用して意味します。 私は古いファイルが私の新たなニーズのための規定を持つことを期待することはできませんという事実を考えると、私はこの関数を書きました。
Private Function RangeAssign(sRange As String, sValue As String) As Integer
Dim rDest As Range
If RangeCheck(sRange) Then
Set rDest = Range(sRange)
Else
Set rDest = Application.InputBox(sMsg + vbCrLf + vbCrLf + _
"Please, select a cell to get" + vbCrLf + _
"the name " + sRange + " assigned", sCopyRight, Type:=8)
rDest.Name = sRange
End If
rDest.Cells(1, 1).NumberFormat = "@"
rDest.Cells(1, 1).Value = sValue
RangeAssign = True
End Function
これは、先のセルを適切に選択することができます。プロパティに値を割り当てるときは、私も名前付き範囲に格納されている値を更新し、セルに書き込むことができます(のは、組み込みの1であることを起こる「著者」、言わせて)ます:
=Author
私は「著者」という名前の範囲を定義し、私は私たち自身の外部の追跡目的のために更新されている必要があり、組み込みのプロパティ「著者」、の値との「A1」セルを満たしているために起こる場合。
このすべては、一夜にしませんでした。私はそれはいくつかの助けになることを願ってます。
私は(マーティンの回答に基づいて)SharePointのプロパティを抽出するためにこれを使用します:
Public Function DocumentProperty(Property As String)
Application.Volatile
On Error GoTo NoDocumentPropertyDefined
DocumentProperty = ActiveWorkbook.ContentTypeProperties(Property).Value
Exit Function
NoDocumentPropertyDefined:
DocumentProperty = CVErr(xlErrValue)
End Function