paste - H3m1sphere/test GitHub Wiki

็†่งฃใ—ใพใ—ใŸใ€‚็”ปๅƒใ‚’้…็ฝฎใ™ใ‚‹้š›ใซใ€ๅ‰ใฎ็”ปๅƒใฎๅณ็ซฏใ‹ใ‚‰5ใƒใ‚คใƒณใƒˆ้–‹ใ‘ใฆๆฌกใฎ็”ปๅƒใ‚’้…็ฝฎใ™ใ‚‹ใ‚ˆใ†ใซไฟฎๆญฃใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ใ“ใฎ่ฆไปถใ‚’ๆบ€ใŸใ™ใŸใ‚ใซใ€ๅ„็”ปๅƒใฎไฝ็ฝฎใ‚’ๅ‰ใฎ็”ปๅƒใฎไฝ็ฝฎใจใ‚ตใ‚คใ‚บใซๅŸบใฅใ„ใฆๅ‹•็š„ใซ่จˆ็ฎ—ใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚

ไปฅไธ‹ใฏใ€็”ปๅƒใ‚’้ฉๅˆ‡ใซ้…็ฝฎใ™ใ‚‹ใŸใ‚ใฎไฟฎๆญฃใ•ใ‚ŒใŸVBAใ‚ณใƒผใƒ‰ใงใ™ใ€‚ใ“ใฎใ‚ณใƒผใƒ‰ใงใฏใ€ๅ‰ใฎ็”ปๅƒใฎๅณ็ซฏใ‹ใ‚‰5ใƒใ‚คใƒณใƒˆใฎ้–“้š”ใ‚’้–‹ใ‘ใฆๆฌกใฎ็”ปๅƒใ‚’้…็ฝฎใ—ใ€ๅˆ—ใฎๆœ€ๅพŒใซๅˆฐ้”ใ—ใŸใ‚‰ๆฌกใฎ่กŒใซ็งปๅ‹•ใ—ใพใ™ใ€‚

Sub ็”ปๅƒใ‚’่ฒผใ‚Šไป˜ใ‘ใ‚‹()
    Dim imgPath As Variant
    Dim startCell As Range
    Dim img As Picture
    Dim i As Integer
    Dim columnCount As Integer
    Dim rowCount As Integer, columnOffset As Integer
    Dim nextLeft As Double, nextTop As Double, maxHeightInRow As Double

    ' ็”ปๅƒใƒ•ใ‚กใ‚คใƒซใฎ้ธๆŠž
    imgPath = Application.GetOpenFilename("็”ปๅƒใƒ•ใ‚กใ‚คใƒซ (*.jpg;*.gif;*.png), *.jpg;*.gif;*.png", MultiSelect:=True)
    If IsArray(imgPath) = False Then Exit Sub ' ใƒฆใƒผใ‚ถใƒผใŒใ‚ญใƒฃใƒณใ‚ปใƒซใ—ใŸๅ ดๅˆ

    ' ่ฒผใ‚Šไป˜ใ‘ใ‚’้–‹ๅง‹ใ™ใ‚‹ใ‚ปใƒซใจๅˆ—ๆ•ฐใ‚’ๅ…ฅๅŠ›
    Set startCell = Application.InputBox("้–‹ๅง‹ใ‚ปใƒซใ‚’้ธๆŠžใ—ใฆใใ ใ•ใ„", Type:=8)
    columnCount = Application.InputBox("ๅˆ—ๆ•ฐใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„", Type:=1)

    ' ็”ปๅƒใฎ่ฒผใ‚Šไป˜ใ‘
    rowCount = 0
    columnOffset = 0
    maxHeightInRow = 0
    nextLeft = startCell.Left
    nextTop = startCell.Top

    For i = LBound(imgPath) To UBound(imgPath)
        Set img = ActiveSheet.Pictures.Insert(imgPath(i))
        With img
            .Left = nextLeft
            .Top = nextTop
            .Placement = xlMoveAndSize

            ' ๆฌกใฎ็”ปๅƒใฎไฝ็ฝฎใ‚’่จˆ็ฎ—
            nextLeft = .Left + .Width + 5 ' 5ใƒใ‚คใƒณใƒˆใฎ้–“้š”ใ‚’่ฟฝๅŠ 
            If .Height > maxHeightInRow Then maxHeightInRow = .Height
        End With

        columnOffset = columnOffset + 1
        If columnOffset >= columnCount Then
            ' ๆฌกใฎ่กŒใธ็งปๅ‹•
            columnOffset = 0
            nextTop = nextTop + maxHeightInRow + 5 ' 5ใƒใ‚คใƒณใƒˆใฎ้–“้š”ใ‚’่ฟฝๅŠ 
            nextLeft = startCell.Left
            maxHeightInRow = 0
        End If
    Next i
End Sub

ใ“ใฎใ‚ณใƒผใƒ‰ใฏใ€ๅ„็”ปๅƒใŒๅ‰ใฎ็”ปๅƒใฎๅณ็ซฏใ‹ใ‚‰5ใƒใ‚คใƒณใƒˆใฎ้–“้š”ใ‚’้–‹ใ‘ใฆ้…็ฝฎใ•ใ‚Œใ‚‹ใ“ใจใ‚’ไฟ่จผใ—ใพใ™ใ€‚ใพใŸใ€ๆŒ‡ๅฎšใ•ใ‚ŒใŸๅˆ—ๆ•ฐใซ้”ใ—ใŸใ‚‰ใ€ๆฌกใฎ่กŒใซ็งปๅ‹•ใ—ใฆๅ†ใณ้…็ฝฎใ‚’้–‹ๅง‹ใ—ใพใ™ใ€‚ใ“ใ‚Œใซใ‚ˆใ‚Šใ€็”ปๅƒใŒ้ฉๅˆ‡ใซ้…็ฝฎใ•ใ‚Œใ€้‡ใชใ‚Šๅˆใ†ใ“ใจใชใๆ•ด็„ถใจใ—ใŸใƒฌใ‚คใ‚ขใ‚ฆใƒˆใซใชใ‚‹ใฏใšใงใ™ใ€‚