Square Beat Engine

Blog for variety of things…

MS-Office

[Excel][VBA] オブジェクト名のワナ

投稿日:2015-10-13 更新日:

Excel 2010のVBAで、ActiveXコントロール(VBA内ではOLEObject)の名前に罠があることに気づいたのでメモ。
「OLEObjectがうまく動作しない!」と嘆く誰かを1人でも救いたい。

OLEObjectの名前は31文字まで!

OLEObjectのプロパティで名前を32文字以上に設定しても、エクセルのオブジェクトとしては31文字までで切り捨てられてしまうようだ。
そのため、以下のコードが正しく動作しなかった。

Excel2007では32文字以上もOK

ただし、32文字以上でも、Excel2007では正しく動作した。
Excel2010で動作テストをしたところ、上記の問題が発覚したわけだ。

大変微妙な仕様変更なので、なかなか気づきにくい部分かと思う。

以上!

-MS-Office

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

[Excel][VBA] エクセルVBAではValueプロパティを指定しよう

前回は、自動記録マクロの問題点を3つ挙げ、1つめのSelectメソッドの無駄を指摘しました。 今回は、2つめのFormulaR1C1プロパティについて考えます。 プロパティの指定 FormulaR1C …

[Excel][VBA] ワークブック・ワークシートを明確に指定

前々回・前回に引き続き、セルに文字列を記入するときのコードについて考えてみます。 今回は、ワークブック・ワークシートを明確に指定する必要性を検討します。 なぜ指定するのか セルの操作をする際、ワークシ …

[Excel][PPT][VBA] エクセルとパワーポイントの改行コードの違い

VBAで、エクセルからパワーポイントに改行を含む文字列をコピーしようとしたとき、若干つまずいたのでメモ! この記事で解決できる課題 パワーポイントの箇条書きでは、Enterで次の段落に移動し、新しい箇 …

[Excel][VBA] Selectメソッドは99%不要

エクセルで、A1セルを選択した後、「abc」という文字列を入力することケースを考えてみます。 この操作をマクロに記録すると、以下のようなコードが生成されるでしょう。 [crayon-5c4440661 …

[Excel][VBA] シートを新規ワークブックにコピーする方法

既存のシートからワークシートを新規シートにコピーする。 手動の場合は、新規ワークブックを選択するだけでよい。 VBAでは以下のメソッドを用いる。 コード例 [crayon-5c44406613f179 …