5

1 人のユーザーに影響を与える厄介な問題があります。

マシンでエラーを再現できません。私が一緒に働いている他の開発者も、彼のマシンで複製できません。ただし、ユーザーのマシンでエラーを特定することはできます。MS Office 2010/PowerPoint 2010/etc で Win 7 Enterprise Version 6.1 Build 7600 を実行しています。

上の1 人のユーザに対して関連するエラーが発生します.Line.Visible = msoFalse。エラーは次のように発生します。

Run-time error '-2147467259 (80004005)':
Method 'Visible' of object 'LineFormat' failed

Visible は明らかにシェイプの のプロパティ.Lineです。[ローカル] ウィンドウで表示できます。

ここに画像の説明を入力

エラーなしで、即時ウィンドウでこのプロパティ値を照会できます。

ここに画像の説明を入力

入力:tb.Line.Visible = msoTrue行が表示されます (期待どおり)

入力:tb.Line.Visible = msoFalse同じコードで「Automation Error/Unspecified error」が生成されます:

ここに画像の説明を入力

ここにいくつかのサンプルコードがあります。tbとして寸法を記入しようとしましShapeたが、これによりType 13 Mismatchエラーが発生します。プロパティ値を0代わりにに設定しようとしmsoFalseましたが、エラーは解決しません。

Sub TestCode()
Dim cht as Chart
Dim tb As Object

    Set cht = ActivePresentation.Slides(1).Shapes("Chart 1").Chart
    Set tb = cht.Shapes.AddTextbox(msoTextOrientationHorizontal, ptLeft, tBoxTop, ptWidth, ptHeight) 'NOTE: tb.Type = msoTextBox

    tb.Select  '<--- KEEP THIS LINE OTHERWISE TEXTBOX _
               '     ALIGNMENT WILL NOT WORK 

    With tb
        With .TextFrame2.TextRange.Characters
            .Text = "foo"
        End With
        .Fill.Visible = msoFalse
        .Line.Visible = msoFalse
        .TextFrame2.WordWrap = msoFalse
        .TextFrame2.TextRange.Font.Bold = True
        .TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter
        .TextFrame2.AutoSize = msoAutoSizeTextToFitShape
    End With
End Sub

このサブルーチンは、フォームのボタン クリック イベントからマスター エラー ハンドラーにラップされるため、データが失われたり、アプリケーションがクラッシュしたりすることはありませんが、アドインが目的の方法でチャート/グラフィックを構築することを妨げます。

デフォルト.Line.Visible msoFalse(問題のあるコード行をコメントアウトできるようにするため) であるため、これは特に重要ではありませんが、コードの変更と PPAM の再配布が必要になります。

なぜこれが起こっているのか、問題のある行をコメントアウトしたり、On Error Resume Nextアプローチを行ったりしないでこれを「修正」する方法があるかどうか疑問に思っています。

更新(コメントから、明確にするために)

この例は、テキスト ボックスの吹き出しの配置と書式設定を処理するために設計されたサブルーチンの 1 つです。これらはすべてmsoTextBox、既存の図形 (例: Chart 図形) の図形コレクション内に追加されるタイプの図形です。

同様の呼び出しはすべてobject.Line.Visible = msoFalse同じエラーで失敗します。

、それぞれが自分のマシンで同じエラーを発生させます。他の同様の呼び出し、たとえば、エラー は発生.MajorGridlines.format.Line.Visible = msoFalseしません。

4

1 に答える 1

0

これは正確には満足のいく答えではありませんが、問題のあるコード行をコメントアウトするだけでエラーを回避できます。TextBox が作成されるとき、このプロパティは既に に設定されているためmsoFalse、冗長なコードであり、省略できます。

于 2013-10-23T14:04:24.690 に答える