#2です。
1)シート名は「紋帳」と「deta」
2)ブックは画像と同じフォルダ内に1度は保存されている(フルパスを得る為)
3)シート名「data」は 1行目がタイトル行でA~D列にNo,名称,ファイル名,形式となっている
A B C D
No 名称 ファイル名 形式
1 いたどり いたどり.EMF C
2 ひげ丸揚羽蝶 ひげ丸揚羽蝶.EMF B
3 ほいのし ほいのし.EMF A
4)ブックにUserForm と ComboBox を置いて下記コードをコピペ
という条件で、Excel2000で動作確認しています。
ただ、先のサンプルでも動作しないとの事ですので動かないかも知れません、、、
もし試す場合はテスト用ブックで。
'---------------------------------------------------
Private Sub UserForm_Initialize()
Dim i As Integer
For i = 1 To 3060 Step 60
Me.ComboBox1.AddItem i & "~" & i + 59 & "番"
Next i
Me.ComboBox1.Style = fmStyleDropDownList
End Sub
'---------------------------------------------------
Private Sub ComboBox1_Change()
Dim myCnt As Long, myRow As Long, myCol As Integer, sh
On Error Resume Next
myCnt = (Me.ComboBox1.ListIndex * 60) + 1
With Worksheets("紋帳")
.DrawingObjects.Delete
For myRow = 3 To 28 Step 5
For myCol = 2 To 20 Step 2
Set r = Worksheets("deta").Columns(1).Find(myCnt, _
after:=Worksheets("deta").Range("A1"), LookAt:=xlWhole)
If Not r Is Nothing Then
.Cells(myRow + 2, myCol).Value = r.Offset(0, 1)
fName = ThisWorkbook.Path & "\" & Trim(r.Offset(0, 2).Value)
If Dir(fName) <> "" And r.Offset(0, 2) <> "" Then
Set sh = .Pictures.Insert(fName)
sh.Left = .Cells(myRow, myCol).Left
sh.Top = .Cells(myRow, myCol).Top
sh.ShapeRange.LockAspectRatio = msoFalse
If r.Offset(0, 3).Value = "B" Then
sh.ShapeRange.LockAspectRatio = msoTrue
sh.ShapeRange.IncrementTop 9#
End If
sh.ShapeRange.Height = 84
sh.ShapeRange.Width = 84
Else
Set sh = .Shapes.AddShape(msoShapeRectangle, _
.Cells(myRow, myCol).Left, _
.Cells(myRow, myCol).Top, 84, 84)
sh.TextFrame.Characters.Text = r.Offset(0, 2) & vbCrLf & "NoImage"
End If
Else
.Cells(myRow + 2, myCol).Value = ""
End If
myCnt = myCnt + 1
Next myCol
Next myRow
End With
End Sub
お礼
たくさんのことを教えていただきました。ありがとうございました。