- ベストアンサー
UserFormにクリップアートを挿入する方法
ExcelのVBAでUserForm内にクリップアートを挿入したいのですが、 どのようにすればよいのでしょうか。 ご回答宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 ファイル名さえ判れば、LoadPicture()関数が使えます。 どうやってファイル名を取得するかが問題ですが、 とりあえず、一例として、 ActiveSheetにクリップアートを挿入して、 直後にUserFormを表示すると UserFormにクリップアートを表示する ように書いてみます。 ' ' ===== ユーザーフォームモジュール ===== Private Sub UserForm_Activate() Dim sPictureFile As String sPictureFile = GetClipArtFileNameFromShapes(ActiveSheet) If sPictureFile <> "" Then Me.Picture = LoadPicture(sPictureFile) Repaint End If End Sub ' ' ===== 標準モジュール ===== Function GetClipArtFileNameFromShapes(ByVal Sh As Worksheet, Optional ByVal ShapeIndex As Long) As String With Sh If ShapeIndex = 0 Then ShapeIndex = .Shapes.Count On Error Resume Next GetClipArtFileNameFromShapes = .Shapes(ShapeIndex).DrawingObject.ShapeRange.AlternativeText End With End Function ファイル名さえ判ればいいので、一旦シート上にクリップアートを読み込んでおいて、 関数 Function GetClipArtFileNameFromShapes(ByVal Sh As Worksheet, Optional ByVal ShapeIndex As Long) (引数はワークシート、シェイプのインデックス(省略可)です。) の戻り値さえ取れれば、それを定数(または変数)化して使うのでもいいのかも知れません。 上の例では、直にUserFormのPictureを設定していますが、無論、各種コントロールでも 同様に.Pictureプロパティを設定するだけです。 応用はお任せします。
お礼
ご回答ありがとうございます。 とても難しかったのですが、何とかPictureプロパティを使ってクリップアートを挿入することが出来ました。今後、文字だけでなく画像も使うことで、応用の幅も広がっていきそうです。