设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1899|回复: 5
打印 上一主题 下一主题

[模块/函数] [源创]Access控制excel插入图片

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2010-11-6 23:02:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有网友问起,发一下以前写过的代码,内容不能直接 运行,只是给大家看懂代码 就可改为自己使用了  
Access控制excel插入图片 --tmtony

strPicPath = strPicPath1 & "\" & Trim$(pstr2) & ".bmp"
If Dir(strPicPath) = "" Then
     strPicPath = strPicPath2 & "\" & Trim$(pstr2) & ".bmp"
    If Dir(strPicPath) = "" Then
      
        strPicPath = strEmptyPath
    End If
End If
    xlsWSheet.Range("C54").Select
    xlsWSheet.Pictures.Insert(strPicPath).Select
    xlsApp.Selection.ShapeRange.ScaleWidth 0.4, msoFalse, msoScaleFromTopLeft
    xlsApp.Selection.ShapeRange.ScaleHeight 0.4, msoFalse, msoScaleFromTopLeft
    xlsApp.Selection.ShapeRange.ScaleWidth 0.4, msoFalse, msoScaleFromTopLeft
    xlsApp.Selection.ShapeRange.ScaleHeight 0.4, msoFalse, msoScaleFromTopLeft
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-11-7 01:25:30 | 只看该作者
好东东,我正在找呢,原来是跑到您哪儿去了(我的代码记不住放到什么地方了)。谢谢还我!

点击这里给我发消息

3#
 楼主| 发表于 2010-11-7 11:36:54 | 只看该作者
哈哈, 厉害, 下次我找不到代码,也问你.
4#
发表于 2010-11-7 17:04:09 | 只看该作者
本帖最后由 lzongb 于 2010-11-7 17:04 编辑

谢谢管理员,我的问题已经搞定了。完整代码(借鉴了网络搜索结果)如下:

Private Sub InsertPicture(PictureFileName As String, TargetCell As Range, CenterH As Boolean, CenterV As Boolean)
'在显示区域中插入图片,可以水平居中或垂直居中,还可以缩小以适应显示区域
    Dim p As Excel.Picture, _
        sh As Excel.Shape, _
        t As Double, l As Double, _
        w As Double, h As Double, _
        wRatio As Double, _
        hRatio As Double

    With TargetCell
        
        For Each sh In .Parent.Shapes '当连续打印时,删除上一户的图片
            If sh.Type = msoLinkedPicture Then sh.Delete
        Next
        
        If PictureFileName = "" Then Exit Sub '未指定图片
        If Dir(PictureFileName) = "" Then Exit Sub '指定的图片文件不存在
        
        Set p = .Parent.Pictures.Insert(PictureFileName)
        
        t = .Top
        l = .Left
        w = .Offset(0, 1).Left - .Left
        h = .Offset(1, 0).Top - .Top
        
        wRatio = Round(w / p.Width, 2)
        hRatio = Round(h / p.Height, 2)
        
        If wRatio < 1 Or hRatio < 1 Then  '当图片大于显示区域时进行缩小
            p.ShapeRange.LockAspectRatio = msoTrue
            If wRatio < hRatio Then
                p.ShapeRange.ScaleWidth wRatio, msoTrue, msoScaleFromMiddle
                p.ShapeRange.ScaleHeight wRatio, msoTrue, msoScaleFromMiddle
            Else
                p.ShapeRange.ScaleHeight hRatio, msoTrue, msoScaleFromMiddle
                p.ShapeRange.ScaleWidth hRatio, msoTrue, msoScaleFromMiddle
            End If
        End If
        
        If CenterH Then '水平居中
            l = l + w / 2 - p.Width / 2
            If l < 1 Then l = 1
        End If
        If CenterV Then  '垂直居中
            t = t + h / 2 - p.Height / 2
            If t < 1 Then t = 1
        End If
    End With
    ' position picture
    With p
        .Top = t
        .Left = l
    End With
    Set p = Nothing
End Sub

用法示例:InsertPicture "d:\demo.bmp",xlBook.worksheets(1).Range("D1"),true,true

点击这里给我发消息

5#
 楼主| 发表于 2010-11-7 17:54:13 | 只看该作者
谢谢分享!!
6#
发表于 2010-11-7 23:21:02 | 只看该作者
lzongb 的功能似乎更强大,连同tmtony 一起谢谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-11 05:12 , Processed in 0.120646 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表