web-dev-qa-db-ja.com

VBAを使用して、指定したセル位置でExcelに画像を挿入する方法

以下のコードを使用して、Excelシートに「.jpg」ファイルを追加しています。

'Add picture to Excel
xlApp.Cells(i, 20).Select
xlApp.ActiveSheet.Pictures.Insert(picPath).Select
'Calgulate new picture size
With xlApp.Selection.ShapeRange
    .LockAspectRatio = msoTrue
    .Width = 75
    .Height = 100
End With
'Resize and make printable
With xlApp.Selection
    .Placement = 1 'xlMoveAndSize
    '.Placement = 2 'xlMove
    '.Placement = 3 'xlFreeFloating
    .PrintObject = True
End With

何が間違っているのかわかりませんが、正しいセルに挿入されないので、この画像をExcelの指定されたセルに入れるにはどうすればよいですか?

23
Berker Yüceer

これを試して:

With xlApp.ActiveSheet.Pictures.Insert(PicPath)
    With .ShapeRange
        .LockAspectRatio = msoTrue
        .Width = 75
        .Height = 100
    End With
    .Left = xlApp.ActiveSheet.Cells(i, 20).Left
    .Top = xlApp.ActiveSheet.Cells(i, 20).Top
    .Placement = 1
    .PrintObject = True
End With

Excelでは何も選択しないことをお勧めします。通常は必要ではなく、コードの速度が低下します。

43
SWa

単に画像を挿入してサイズ変更するだけの場合は、以下のコードを試してください。

特定の質問に対して、プロパティTopLeftCellは、左上隅が駐車されているセルに関連する範囲オブジェクトを返します。特定の場所に新しい画像を配置するには、「右側」の場所に画像を作成し、ダミーの上部と左側のプロパティ値をdouble変数に登録することをお勧めします。

名前を簡単に変更するには、変数に割り当てられたPicを挿入します。 Shapeオブジェクトには、Picture Objectと同じ名前が付けられます。

Sub Insert_Pic_From_File(PicPath as string, wsDestination as worksheet)
    Dim Pic As Picture, Shp as Shape
    Set Pic = wsDestination.Pictures.Insert(FilePath)
    Pic.Name = "myPicture"
    'Strongly recommend using a FileSystemObject.FileExists method to check if the path is good before executing the previous command
    Set Shp = wsDestination.Shapes("myPicture")
    With Shp
        .Height = 100
        .Width = 75
        .LockAspectRatio = msoTrue  'Put this later so that changing height doesn't change width and vice-versa)
        .Placement = 1
        .Top = 100
        .Left = 100
    End with
End Sub

幸運を!

1
FCastro

私はPCとMacで動作するシステムに取り組んでおり、PCとMacの両方に画像を挿入するために機能するコードを見つけるために戦っていました。これは私のために働いたので、うまくいけば他の誰かがそれを利用することができます!

注:strPictureFilePathおよびstrPictureFileName変数は、有効なPCおよびMacパスに設定する必要があります。

PCの場合:strPictureFilePath = "E:\ Dropbox \"およびstrPictureFileName = "TestImage.jpg"およびMacの場合:strPictureFilePath = "Macintosh HD:Dropbox:"およびstrPictureFileName = "TestImage.jpg"

次のようなコード:

    On Error GoTo ErrorOccured

    shtRecipeBrowser.Cells(intDestinationRecipeRowCount, 1).Select

    ActiveSheet.Pictures.Insert(Trim(strPictureFilePath & strPictureFileName)).Select

    Selection.ShapeRange.Left = shtRecipeBrowser.Cells(intDestinationRecipeRowCount, 1).Left
    Selection.ShapeRange.Top = shtRecipeBrowser.Cells(intDestinationRecipeRowCount, 1).Top + 10
    Selection.ShapeRange.LockAspectRatio = msoTrue
    Selection.ShapeRange.Height = 130
1
Tristan