墨水工具 - VBA - Excel数字签名/绘图

Mig*_*Ryu 5 excel vba excel-vba

我想在我的一些公司表格中添加手写数字签名.目标非常简单,选择一个文档,添加签名(通过使用绘图板,可以完成Excel's Ink Tools)并将文件作为PDF存储在服务器中.这将减少打印的必要性,然后再扫描表单以获得签名.

我正在使用excel作为文件操作和搜索的主界面,但遗憾的是我无法Excel - Ink Tools通过VBA 找到任何参考/库.

你们能请我指出正确的方向找到一些参考文献或一个关于如何Ink Tools在VBA中启动对象的简单片段吗?或者我是否必须使用其他软件才能获得签名?

预先感谢.

米格尔

编辑了我自己的答案,更新了如何使用Userform在Excel中插入签名图像

Mig*_*Ryu 5

更新:

嗨,大家好,

在@Macro Man向我指出正确的方向后,我发现了一些有助于使eSignature正常运行的材料.

我在MSDN 数字墨水签名 - 概念和技术以及InkPicture类上找到了一些材料,通过PictureBox/Userform讨论了VB.net和C#上的Ink集合,这与另一个Stackoverflow响应中的InkEdit控件相结合该VBAs工具箱具有InkPicture Control附加控件,可用于通过用户表单收集手写电子签名.

请逐步查找以下内容:

在工具>附加控件下的附加控件的VBAs工具箱中,有InkPicture控件,它允许您创建签名用户窗体.

在此输入图像描述

添加InkPicture后,可以将其用作工具箱上的任何其他控件.

在此输入图像描述

然后是为Signature请求初始化UserForm的情况.我正在使用绘图板,但其他硬件也应该可以使用.

在此输入图像描述

并且在需要时存储或利用结果图像,在我的情况下在服务器中保存临时版本然后调整大小并添加到Word文档.


编辑:

这里回答了类似的问题之后,关于如何使用Userform InkPicture将图像签名输入到工作表/特定单元格中,我想我会为那些感兴趣的人编辑这个答案.

下面的代码将允许您打开用户窗体,以便用户可以签署墨迹字段,温和地保存图像,将InkPicture添加到工作表中并终止临时图像.

设置你的UserForm(我的设置是这样的,有几个额外的选项)UserForm被命名Signature_pad,你需要的基本选项Private Sub Use_Click().

在此输入图像描述

这是Userform中的代码:

Private Sub Use_Click()

    'dim object type and byte array to save from binary
    Dim objInk As MSINKAUTLib.InkPicture
    Dim bytArr() As Byte
    Dim File1 As String

    'get temp file path as $user\Temp\[file name]
    FilePath = Environ$("temp") & "\" & "Signature.png"

    ' set objInk as image/strokes of InkPicture control form object
    Set objInk = Me.SignPicture

    'if object is not empty
    If objInk.Ink.Strokes.Count > 0 Then
        'get bytes from object save
        bytArr = objInk.Ink.Save(2)
        'create file for output
        Open FilePath For Binary As #1
        'output/write bytArr into #1/created (empty)file
        Put #1, , bytArr
        Close #1
    End If

    'set public File as file path to be used later on main sub
    Signature.File = FilePath

    Unload Me
End Sub

Private Sub Cancel_Click()
    End
End Sub

Private Sub ClearPad_Click()
    'delete strokes/lines of signature
    Me.SignPicture.Ink.DeleteStrokes
    'refresh form
    Me.Repaint
End Sub
Run Code Online (Sandbox Code Playgroud)

下面是Main sub(模块调用Signature)调用userform并处理签名,你可以Sub用一个button或另一个来调用它Sub.

'public temp file path
Public File
Sub collect_signature()

    'Dim and call userform
    Dim myUserForm As Signature_pad

    Set myUserForm = New Signature_pad
    myUserForm.Show
    Set myUserForm = Nothing

    'insert image/signature from temp file into application active sheet
    Set SignatureImage = Application.ActiveSheet.Shapes.AddPicture(File, False, True, 1, 1, 1, 1)

    'scale image/signature
    SignatureImage.ScaleHeight 1, True
    SignatureImage.ScaleWidth 1, True

    'image/signature position
    SignatureImage.Top = Range("A1").Top
    SignatureImage.Left = Range("A1").Left

    'delete temp file
    Kill File

End Sub
Run Code Online (Sandbox Code Playgroud)

请务必重命名Userform NameButtons Name或代码以匹配您的名称buttons.


Sam*_*Sam 3

这是您想要的 InkEdit 控件吗?

这是您可以在“工具”->“参考”中找到的标准库之一

显示 InkEdit 库的参考窗口