• ベストアンサー

UserFormにクリップアートを挿入する方法

ExcelのVBAでUserForm内にクリップアートを挿入したいのですが、 どのようにすればよいのでしょうか。 ご回答宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.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プロパティを設定するだけです。 応用はお任せします。

di6351
質問者

お礼

ご回答ありがとうございます。 とても難しかったのですが、何とかPictureプロパティを使ってクリップアートを挿入することが出来ました。今後、文字だけでなく画像も使うことで、応用の幅も広がっていきそうです。

関連するQ&A