プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (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プロパティを設定するだけです。
応用はお任せします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/11/14 18:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!