我想在我的一些公司表格中添加手写数字签名。目标非常简单,选择一个文档,添加签名(通过使用绘图板,可以使用Excel's Ink Tools
完成)并将文件作为PDF存储在服务器中。这样可以减少打印的必要性,然后再扫描表单以获得签名。
我正在使用excel作为文件操作和搜索的主界面,但遗憾的是我无法找到任何通过VBA使用Excel - Ink Tools
的参考/库。
你能指点我找到一些参考资料或一个关于如何在VBA中启动Ink Tools
对象的简单片段吗?或者我是否必须使用其他软件才能获得签名?
先谢谢。
米格尔
编辑了我自己的答案,更新了如何使用Userform在Excel中插入签名图像
答案 0 :(得分:5)
更新:
嗨,大家好,
在@Macro Man向我指出了正确的方向后,我发现了一些有助于启动和运行电子签名的材料。
我在MSDN Digital Ink Signatures - Concepts and Technologies 和 InkPicture Class 上发现了一些关于VB.net和C#上的Ink集合的材料通过PictureBox / Userform,这与另一个Stackoverflow response中的InkEdit控件相结合,在其中我意识到VGA工具箱有一个InkPicture Control附加控件,可用于通过用户表单收集手写电子签名。
请逐步查看以下内容:
在VBAs工具箱中,在工具>下进行额外控制其他控件有InkPicture控件,允许您创建签名用户表单。
添加后,InkPicture可用作工具箱上的任何其他控件。
然后是为Signature请求初始化UserForm的情况。我使用绘图板,但其他硬件也可以使用。
在需要时存储或使用生成的图像,在我的情况下,在服务器中保存临时版本,然后调整大小并添加到Word文档。
修改强>
在here中回答类似的问题之后,关于如何使用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
以下是调用用户表单并处理签名的Main sub
(称为Signature
的模块),您可以使用Sub
调用此button
或另一个{Sub
1}}。
'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
请务必重命名Userform Name
和Buttons Name
或代码以匹配您buttons
的名称。
答案 1 :(得分:3)