Mig*_*Ryu 5 excel vba excel-vba
我想在我的一些公司表格中添加手写数字签名.目标非常简单,选择一个文档,添加签名(通过使用绘图板,可以完成Excel's Ink Tools)并将文件作为PDF存储在服务器中.这将减少打印的必要性,然后再扫描表单以获得签名.
我正在使用excel作为文件操作和搜索的主界面,但遗憾的是我无法Excel - Ink Tools通过VBA 找到任何参考/库.
你们能请我指出正确的方向找到一些参考文献或一个关于如何Ink Tools在VBA中启动对象的简单片段吗?或者我是否必须使用其他软件才能获得签名?
预先感谢.
米格尔
编辑了我自己的答案,更新了如何使用Userform在Excel中插入签名图像
更新:
嗨,大家好,
在@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 Name和Buttons Name或代码以匹配您的名称buttons.
| 归档时间: |
|
| 查看次数: |
5110 次 |
| 最近记录: |