お世話になっています。
フォルダの画像をエクセルに張り付けるVBAを作ろうとしています。
画像間隔をセル間としてコードを書きましたが、誤差が積み重なり枚数が多くなるとずれが生じてしまいます。
これを解決したいと思い、以下のコードを追加してみましたがうまくいきません。
With Selection
.ShapeRange.Top = ActiveCell.Top
.ShapeRange.Left = ActiveCell.Left
.Height = ActiveCell.Height
End With
画像をセルにぴったりと合うような補正がしたいです。
ループをしながら定期的に、セルの上部と画像の上部を合わせる操作をしたいのですがどのようにすればよいのでしょうか。
もしくは、画像の挿入位置をすべてセルで指定すればいいのでしょうが、以下の操作をセル位置を使い指定する方法がわかりません。
i = i + 1
If i Mod 4 = 1 Then
lngTop = lngTop + e * 17
Else: lngTop = lngTop + e + d
End If
ちなみに挿入の横方向の位置は、写真を見ていただければわかりやすいと思うのですがセルの横辺に一致しないような場所に挿入したいのでポイントで指定しています。
超初心者です。
宜しくお願いします。](80ebc6d9e57389633ea282425dca967f.png)
vba
1 2Sub 画像貼り付け() 3 4 5Dim lngTop As Long 6Dim objFile As Object 7Dim objFldr As FileSystemObject 8Dim TheShape As Shape 9Dim i As Integer 10Dim d As Single 11Dim e As Single 12 Dim ws As Worksheet 13 14d = Range("A16").Top - Range("A4").Top 15e = Range("A17").Top - Range("A16").Top 16lngTop = e * 3 17 18'ポスト 19 20 Set objFldr = CreateObject("Scripting.FileSystemObject") 21 Worksheets("ポスト").Activate 22 23 24 i = 1 25 For Each objFile In objFldr.GetFolder(ThisWorkbook.Path & "\ポスト").Files 26 27 ActiveSheet.Shapes.AddPicture _ 28 Filename:=objFile, _ 29 LinkToFile:=False, _ 30 SaveWithDocument:=True, _ 31 Left:=9.5, _ 32 Top:=lngTop, _ 33 Height:=d, _ 34 Width:=252.834 35 36 With Selection 37 38 39 .ShapeRange.Top = ActiveCell.Top 40 .ShapeRange.Left = ActiveCell.Left 41 42 .Height = ActiveCell.Height 43 End With 44 45 i = i + 1 46 47 If i Mod 4 = 1 Then 48 lngTop = lngTop + e * 17 49 50 Else: lngTop = lngTop + e + d 51 52 End If 53 54 55 Next 56 57End Sub 58 59 60 61コード
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/16 08:46