精华内容
下载资源
问答
  • excel插入图片(利用vba

    千次阅读 2019-02-19 10:00:18
    4. 复制下面vba代码,红字前的属性注意修改,红字不需删除 -------------------------------------------------复制分割线以下内容----------------------------------------------------------------------...

    1. 按ALT+F11
    在这里插入图片描述
    2. 插入模块
    3. 单元格的大小调整为照片插入的大小
    4. 复制下面vba代码,红字前的属性注意修改,红字不需删除
    -------------------------------------------------复制分割线以下内容-----------------------------------------------------------------------------
    Sub 批量插入图片()
    Dim address As String
    Dim cellcolumn, piccolumn As Integer
    On Error Resume Next
    address = “E:\商品图片” '图片文件夹所在的位置,根据图片位置修改
    cellcolumn = 1 '设置项目名称所在列,根据自己实际情况修改
    piccolumn = 2 '设置插入图片所在第几列,根据自己实际情况修改
    Application.ScreenUpdating = False
    For I = 2 To Range(“A65536”).End(xlUp).Row '数字2是设置开始填充图片的行号是第二行,根据实际情况修改
    Cells(I, piccolumn).Select
    Cells(I, piccolumn) = Cells(I, cellcolumn) '图片所在单元格必须有数据才能支持排序
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, (Cells(I, piccolumn).Left + 2.5), (Cells(I, piccolumn).Top + 2), (Cells(I, piccolumn).Width - 5), (Cells(I, piccolumn).Height - 4)).Fill.UserPicture address & “” & Cells(I, cellcolumn).Text & “.jpg”
    Selection.ShapeRange.LockAspectRatio = msoTrue
    Selection.ShapeRange.Rotation = 0#
    Selection.Placement = xlMoveAndSize
    Selection.PrintObject = True
    Next I
    Application.ScreenUpdating = True '打开屏幕更新
    End Sub
    -----------------------------------------------复制分割线以上内容------------------------------------------------------------------------------
    5. 按Ctrl+S,保存(弹出窗口 点击是,确定),关闭窗口,回到要插入图片的sheet
    6. 视图—宏—查看宏,选择【批量插入图片】,执行

    展开全文
  • 图片自适应单元格代码
  • VBA 发送邮件的正文图片插入方法——HTML引用附件法 {"作者":"Antoniothefuture" "关键词":["VBA","Outlook","发送邮件","HTML"] "开发平台":"不限" "开发语言":"VBA" "简介": "VBA 发送邮件的正文图片...

    VBA 发送邮件的正文图片插入方法——HTML引用附件法

    {"作者":"Antoniothefuture"

    "关键词":["VBA","Outlook","发送邮件","HTML"]

    "开发平台":"不限"

    "开发语言":"VBA"

    "简介": "VBA 发送邮件的正文图片插入方法——HTML引用附件法"

    }

    近期在做一个批量发送邮件的VBA程序,文本可以发,但是插入图片时遇到了难题,我先将word保存为html格式,然后用FSO(File System Object)读取文本并直接赋值到邮件对象(Outlook.MailItem) 的.HtmlBody 里,文本可以显示,但是图片显示不出来,其实问题也显而易见的,Word保存为Html时,图片不会随文件一起保存,而是另外放在一个文件夹了(Docx其实是一种压缩包) ,只有本机可以加载该图片,发送邮件后,由于图片没有传到服务器上,因此收件人并不会看到你的图片。

    我参考这位同志的文章之后,才知道可以通过引用附件的方法来插入图片,但是他是直接拼接HTML,我的是完整的HTML,因此需要用到一种骚操作:

    首先我随机定义了一个字符串,而且需要确保该字符串在正常情况下,被人写到正文里的概率很小:

    S = “OIUGIQLKDNGOD"  (乱写的)

    然后我将所有需要插入的图片路径放在字典对象里,key为该字符串加上一个自增变量,然后是图像的路径:(关于字典对象的其他骚操作可以翻翻我的其他文章)

    N = N + 1

    ImgDic.add S & N & S,ImgPath

    在word保存为html格式之前,在需要插入图片的地方,插入该字符串:

    TempDoc.Range(r1,r2).text = S & N

    然后保存为HTML格式,用FSO读取文件中的所有字符,然后遍历字典对象,用replace将图片组装为html <img>节点,同时邮件添加附件

    HtmlStr = FSOTextStream.ReadAll

    DicKeys = ImgDic.keys

    for i = 0 to DicKeys.count - 1

        ImgFileName = GetFileName(ImgDic(DicKeys(i)))

        NodeStr = "<img id = ""_" & ImgFileName & """ src=”“cid:" & ImgFileName * """>"

        HtmlStr = replace(HtmlStr,DicKeys(i),NodeStr)

        objOutlookMsg.attachments.add ImgDic(DicKeys(i))

    next

    objOutlookMsg.send 大功告成

    展开全文
  • VBA Excel 插入图片(非引用方式)

    万次阅读 2017-05-03 16:32:52
    引用的方式插入图片ActiveSheet.Pictures.Insert(imgPath)这种方式插入的图片只是引用而已,当图片被删除、移动时,excel文件中的图片将会找不到资源位置。非引用方式插入图片worksheet.Shapes.AddPicture("C:\\GW...

    引用的方式插入图片

    ActiveSheet.Pictures.Insert(imgPath)

    这种方式插入的图片只是引用而已,当图片被删除、移动时,excel文件中的图片将会找不到资源位置。

    引用失败

    非引用方式插入图片

    worksheet.Shapes.AddPicture("C:\\GW93802.jpg", false, true, 1, 1, 800, 800)

    这种方式会将图片作为excel的资源打包到excel文件中

    EXCEL资源
    将excel文件改成压缩包的形式变能看到上图内容

    这里写图片描述

    展开全文
  • 注:本文在翻译过程中,图片会与原文章有些差异,主要是我为了更好的让大家看清楚做了一个图文诠释。 原文地址:http://www.geeksengine.com/article/create-dll.html 感谢原作者的文章。 我正在更新我在访问VBA...

    注:本文在翻译过程中,图片会与原文章有些差异,主要是我为了更好的让大家看清楚做了一个图文诠释。

    原文地址:http://www.geeksengine.com/article/create-dll.html 感谢原作者的文章。

    我正在更新我在访问VBA创建和跨越,我需要一些封装的功能在DLL中的场景来了一个应用程序。我以前用VB(Visual Basic中5和6)多年前创建的DLL。最好的办法是使用C#或VB.Net创建DLL来实现。

    创建在C#或VB.Net一个DLL并不难,只要你有面向对象编程经验或知识。创建DLL后,我试图从Access VBA编辑引用它,但一直得到消息“无法添加到指定文件的引用。”在这个问题上经过一番研究,我了解需要以下操作:

    (1)如何正确地创建Access或Excel中的DLL(或在任何Microsoft Office应用程序或VB6中使用)http://blog.csdn.net/kongwei521/article/details/77921436

    (2)如何正确地将C#或VB.Net的DLL在开发机器或者生成环境机器中注册 http://blog.csdn.net/kongwei521/article/details/77929273

    (3)如何正确地在Access VBA或Excel VBA内引用访问C#或VB.Net写的DLL http://blog.csdn.net/kongwei521/article/details/77929277

    在本文中,我将向你展示如何正确地在Visual Studio中创建一个C#或VB.Net DLL和使用它的MS Access,Excel的VBA或VB6应用程序内。希望提示可以为您节省几个小时或头痛的日子。

    1. 必须以管理员身份运行 Visual Studio(你需要管理员权限来让 Visual Studio 正确注册 DLL。您可以使用 regasm 命令去注册,不过如果使用 Visual Studio 会容易些)。创建一个新的C#(或VB.Net)项目,然后选择类库作为项目 ,命名为:SimpleCalc


    下面我创建了一个简单的计算类测试。这个类有两个可变构件以及一个Add()方法。该方法将两个整数计算并返回结果。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace SimpleCalc
    {
        public class Calc
        {
            private int numberOne = 0;
            private int numberTwo = 0;
    
            public void SetNumberOne(int number)
            {
                numberOne = number;
            }
    
            public void SetNumberTwo(int number)
            {
                numberTwo = number;
            }
    
            // Add two integers
            public int Add()
            {
                return numberOne + numberTwo;
            }
        }
    }



    2:配置项目属性,使其COM可见。鼠标右键点击项目SimpleCalc的属性打开项目属性的对话窗口。


    当打开项目属性窗口中后,点击应用程序选项卡,然后单击【程序集信息】按钮。



    【程序集信息】打开的窗口,选中使程序集COM可见(M)

    在VB或VBA创建的应用程序是基于COM的应用程序。所以,你在C#或VB.Net创建的类库必须作为一个COM可见组件来创建。这使得基于COM的应用程序调用类库的成员变量和方法。



    3.注册为COM互操作。

    除了使DLL的使程序集COM可见(M),我们还需要将此DLL在Windows中注册为COM组件。根据你的的情况下有几种方法可以做到这一点。

    对于开发的电脑,我们可以在 Visual Studio 中勾选 "【为COM互操作注册(C)】" 选项。在项目属性窗口,单击生成选项卡。然后勾选【为COM互操作注册(C)】(根据您的Visual Studio版本,它可能是在一个不同的选项卡上)。这使得Visual Studio中自动执行两件事情,当项目完成编译。首先,它会生成一个.TLB类型库文件。其次,它将在 Windows 注册表中注册 COM 组件的类信息。

    【为COM互操作注册(C)】属性指定应用程序是否会否将 com 对象公开给客户端应用程序, 以便它们可以透明地与 com 对象进行交互。


    下面是在 Windows 注册表中显示已编译后的程序集注册内容, 以便 COM 客户端可以透明地使用. NET 类。请注意, DLL 的路径存储在CodeBase属性中。

    下图需要打开 控制面板=组件服务=》com+组件


    要注册其他计算机上,如生产环境中的电脑,您可以通过使用RegAsm.exe注册程序集。请参见另外一篇文章的详细信息。

    4.编译该项目。

    生成解决方案。然后进入bin文件夹。取决于您的勾选是否是调试或发布版本,你可以在Bin目录下找到的编译后的DLL和任何调试.TLB类型库文件。

    在我们的例子中,它发布的路径是D:\ CSHARP \ SimpleCalc \ SimpleCalc \ BIN \


    5.将生成类型库文件复制到Windows系统文件夹目录下。

    Windows系统文件夹目录【C:\Windows\System32】是DLL和类型库的默认位置,让我们的类型库生成后的SimpleCalc.tlb复制到此目录下

    OK至此已经生成在VBA中要调研的tld了

    6.从Access 、Excel、Word 等按Ctrl+F11进入VBA 编辑器进行引用生成的类库文件。

    注:我这里是创建的excel文件进行测试的,原文中用的是access文件

    首先,创建一个新的 Access 数据库,打开 Visual Basic 代码编辑器。在菜单中点工具-> 引用



    点击引用窗口时,单击浏览按钮。


    然后点击浏览(B),打开 C:\Windows\System32文件夹目录后选择 SimpleCalc.tlb打开。



    点击打开完成后,SimpleCalc将会显示在你的参照引用列表中,你需要向下移动并在参照引用列表中找到并勾选中。然后单击确定关闭引用窗口。或者你可以选择进行上移

    您可以在注册表中的截图记得上面有在Codebase项一个DLL路径值。VBA将使用此注册表信息来查找调用的DLL。在我们例子中,它是D:\ CSHARP \ SimpleCalc \ SimpleCalc \ BIN \发布\ SimpleCalc.dll


    7.在 VBA 代码中使用SimpleCalc生成的DLL。

    若要使用 C# DLL 中的变量和方法,我们需要调用 VBA 里面的参照引用 DLL。将一个按钮添加到 Access 窗体,然后向其添加一个 click 事件。在 click 事件中我们调用在 VBA 模块中创建的 test()方法


    下面是一个示例: 在VBA 调用 SimpleCalc.dll。test() 函数调用.Net DLL 通过从 Calc 类创建一个新的对象,然后调用其方法。




    Private Sub CommandButton1_Click()
    Call test
    End Sub
    Public Function test()
        Dim lngResult As Long
        
        Dim objCalc As SimpleCalc.Calc
        Set objCalc = New SimpleCalc.Calc
        
        objCalc.SetNumberOne (3)
        objCalc.SetNumberTwo (6)
        
        lngResult = objCalc.Add()
            
    End Function
    

    如果我们调试并单步调试并监视lngResult变量 ,我们将会看到,执行调用 C# DLL 内部计算后并把结果值9返回到 VBA变量中。你可以看到在即时监视窗口或鼠标移动到变量lngResult 上就会显示结果值。

    Excel:


    Access:


    在这篇文章中,我们经历了创建.Net C# DLL,然后使用它 在VBA调用访问的步骤。它带来.Net 的力量到 Microsoft Office 应用程序。在这篇文章的局限性是 Visual Studio在我们的开发机器只自动注册了 DLL 和类型库。我们没有介绍如何将 DLL 部署到生成环境的电脑上。在这种情况下,查阅有关如何使用 Regasm.exe (程序集注册工具) 在目标机器上注册 DLL 请参另外一篇文章注意您也可以为您的应用程序创建安装程序包和 regasm.exe 作为自定义命令添加到安装程序包中。


    您编码愉快 !

    其他文章系列:

    (1)如何正确地创建Access或Excel中的DLL(或在任何Microsoft Office应用程序或VB6中使用)http://blog.csdn.net/kongwei521/article/details/77921436

    (2)如何正确地将C#或VB.Net的DLL在开发机器或者生成环境机器中注册 http://blog.csdn.net/kongwei521/article/details/77929273

    (3)如何正确地在Access VBA或Excel VBA内引用访问C#或VB.Net写的DLL http://blog.csdn.net/kongwei521/article/details/77929277




    展开全文
  • Sub 添加图片备注() Dim rng As Range For Each rng In Selection picph = ThisWorkbook.Path & "/图片/" & rng.Value & ".jpg" On Error Resume Next rng.ClearComments With rng.AddComment.Shape...
  • 我今天用VBA 实现一下以下功能:代码前需引用 Microsoft Activex Data Objects x.x 库 1,把图片保存到ACCESS(通过OLE对象) Sub 保存图片到ACCESS数据库() '头像那列数据库类型为OLE对象 Dim con As New ADODB.C...
  • 好不容易做完了100页的活动方案,交到处女座上司那里,他告诉我:“Word里面的图片要统一尺寸,还有…必须居中!”。这不是逼人辞职吗?你早不说,现在文件做完了,你要我近百张Word图片一个个改尺寸、居中,咋不...
  • 在EXCEL里,需要大量引用网上链接图片,例如python的爬虫把图片链接爬取之后,需要在EXCEL内展示图片,可以使用VBA批量将URL链接地址图片转为图片; 1.复制以下代码到VBA内,(不知道VBA是什么的传送门:...
  • 文章目录0 引言1 提前准备VBA代码1.1 ThisWorkbook的代码:1.2 模块的代码:2 设置步骤2.1 VBA代码设置单元格2.2 插入图片到单元格2.3 以启用宏的方式保存图片 0 引言 今天有人问我Excel单元格插入图片并实现单(双...
  • 直接上代码在sheet1里面,顺便修改sheet1为Sht1 Sub Image_Change() Dim x%, y%, w%, h%, iPath$ ... With ActiveSheet.Shapes.Range(Array("图片")) x = .Left '记录坐标点 y = .Top '记录坐标点 w = .Wi...
  • 1. 在桌面创建素材文件夹“图库”存放要插入的图片,Excel“花”为待插入的Excel表。2. “花”表格内容布局如下 3. 创建VBA函数(sheet1--&gt;右键--&gt;查看代码--&gt;将如下代码复制进来--&gt;...
  • 源代码中有数据库、记录集的打开、引用、关闭,有如何调用文件打开对话框,如何获取文件名、数据库所在目录路径的文件操作方法,如何获取最大记录数和当前记录指针,如何增加修改数据库记录,如何将图片存入数据库...
  • Dim WordApp As Object Set WordApp = CreateObject("Word.Application") WordApp.Visible = True Dim WordDoc As Object ...PicPath="图片地址" WordApp.ActiveDocument.Bookmarks("BM1_1").Range.Se.
  • EXCLE批量插入图片VBA代码

    千次阅读 2019-08-30 20:38:05
    输入入下vba代码: Sub 批量插入图片() Dim address As String Dim cellcolumn, piccolumn As Integer On Error Resume Next '容错处理 address = “E:\商品图片” '图片文件夹所在的位置,根据图片位置修改 cell...
  • 今天女朋友工作上出了点麻烦,就是要向Word中批量添加图片以及整理成Excel数据的图片名。其中图片名需要设置段落和文字格式,有些图片还是共享一个图片名。这可是个繁琐而枯燥的工作。我一直相信重复劳动是对人这...
  • 网友问题: 如何能够将jpg图片批量转成pdf文件,并将pdf子文件合并成一个文件.? 为此给出解题思路如下: 将jpg图片批量插入到word文档中,然后使用word的...2,建立word.application的引用Set appWD = CreateObject(...
  • Sub InsertPic(ByVal 图片链接 As String, ByVal 插入图片表名 As String, ByVal 插入图片单元格地址 As String) On Error Resume Next Dim rng As Range Set rng = Sheets(插入图片表名).Range(插入图片单元格...
  • http://club.excelhome.net/forum.php?mod=viewthread&tid=1369455
  • 导入:右击工作表,查看代码,然后在打开的...执行:在各单元格输入图片路径(可用dir /b /s E:\图片\*.jpg >E:\图片\picpath.txt得到图片路径),然后在视图工具栏的宏中点击查看宏。 另外一种选择可能是HYPERLINK。
  • 函数作用:将选择定单元格作成镜像图片.............103 '105.函数作用:反选择单元格中的数.....................105 '106.函数作用:在Excel中加入一个量度尺(以厘米为单位).106 '107.函数作用:在Excel中加入一个量度...
  • Excel VBA-批量插图.vba

    千次阅读 2018-10-24 10:52:29
    '大家好,我是笨笨,笨笨的笨,笨笨的笨...'选中单元格,按其内容,插入图片 '2014-08-08 Sub inputImg() On Error Resume Next Dim Cell As Range Dim Pics As String Dim ErrCell As String Dim PictruePat...
  • 二、插入图片实现代码 '点击按钮弹框输入员工工号 Sub getPic() Load UserForm1 UserForm1.Show End Sub '输入工号后点击确定按钮,将工号匹配的图片插入到页脚 Private Sub CommandButton1_Click() Dim ...
  • VBA调用Shell

    2021-08-28 15:32:59
    VBA中执行Shell介绍,打开应用,执行python、bat、mysql;
  • vba word 自动插入题注

    2013-01-08 22:41:53
    vba word 自动插入题注 简单测试
  • 遇到困难,网站为Flash图片图片中的一些按钮之类大同小异总有些变化,所以编好的代码由于这种变化经常识别不了,无意中发现,借助微软OneNote的OCR图片识别功能可做到,故整理了此文档供vb及VBA开发者参考
  • 本窗体演示了VBA Treeview的一些功能。大多数选项可以在运行和更新 Treeview 属性时更改。在 Treeview 运行时更改 紫色 复选框将导致清除并重新创建 Treeview。 1.2 按钮说明 按钮标题 项 描述 ...
  • VBA调用dll实例

    2010-08-12 18:58:37
    VBA调用dll是指定路径的,如果该路径下没有想调的dll怎么办,本文给出了一个解决方法
  • 将某文件夹下子文件夹的名称导入到excel表中,语言是VBA
  • 添加一个filesystemobject引用,工具--->引用---->microsoft scripting runtime 步骤2: 添加模块,并添加以下代码 Option Explicit '设置单元格大小,单元格大小设置因人而异,设置数量要大于或者等于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,604
精华内容 641
关键字:

vba引用图片