我正在创建一个需要捕获客户和员工签名的Excel 2013电子表格。我能够将inkPicture控件添加到VBA表单中,并且签名操作正常。我想这样做,以便在两个人在表单上签署inkPictures后,他们的签名将作为图像保存在工作表中。之后,代码将锁定工作表。
我在工作站上开发它,但它将用于平板电脑。从我所看到的,inkPicture控件不会在非移动版本的操作系统(或者它的Excel?)上显示在工作表上。我的雇主还没有给我一台平板电脑,所以我无法说出平板电脑上发生了什么。但这就是为什么我要在工作表上保存图像控件中的签名的原因。
我不认为我可以使用商业签名包,从我所看到的,这些包锁定整个文件,而不仅仅是单个工作表。
我在网上看到了不少文章,但他们似乎都使用VB.NET或C#.NET,我还没有能够将这些例子翻译成VBA。同样,问题是:如何将inkPicture笔划保存到工作表上的图像上?谢谢!
抱歉,没有任何代码可以显示在这里,我在办公室做了一些工作,但是我在家里发布了这个(是的,在我休息日)。
答案 0 :(得分:0)
好的,我发现了如何将签名保存为.gif文件。但我无法将图像文件加载回工作表上的Image控件。你在下面看到的是我如何将图像本身放到工作表上。但后来,我决定将图像添加到按钮控件中。这就是......
Private Sub cmdContinue_Click()
Dim imgBytes() As Byte
Dim strFileName As String
Dim newImg
'
' The real piece I was missing!
'
imgBytes = inkClient.Ink.Save(IPF_GIF)
'
' Now save the byte array to a file
'
strFileName = ActiveWorkbook.Path & "\test.gif"
Open strFileName For Binary Access Write As #1
Put #1, 1, imgBytes
Close #1
'
' Bring the image back onto the sheet, then adjust it as needed
'
ActiveSheet.Unprotect Password:=strSheetPassword
Set newImg = ActiveSheet.Pictures.Insert(strFileName)
With newImg
.Top = 100
.Left = 1000
End With
ActiveSheet.Protect Password:=strSheetPassword
'
' Code to remove the saved file goes here
'
' ...
'
Hide ' Hiding the form
End Sub
答案 1 :(得分:0)
感谢您的发布!我刚买了一个Surface,想了解更多关于墨水的信息。
我认为实现目标的更简单方法是:
ActiveSheet.Unprotect Password:=strSheetPassword
inkClient.Ink.ClipboardCopy
ActiveSheet.paste
Set newImg = Selection
With newImg
.Top = 100
.Left = 1000
End With
ActiveSheet.Protect Password:=strSheetPassword