如何使用VBA for Excel 2013将inkPicture保存为图像?

时间:2014-11-19 16:10:21

标签: excel vba controls

我正在创建一个需要捕获客户和员工签名的Excel 2013电子表格。我能够将inkPicture控件添加到VBA表单中,并且签名操作正常。我想这样做,以便在两个人在表单上签署inkPictures后,他们的签名将作为图像保存在工作表中。之后,代码将锁定工作表。

我在工作站上开发它,但它将用于平板电脑。从我所看到的,inkPicture控件不会在非移动版本的操作系统(或者它的Excel?)上显示在工作表上。我的雇主还没有给我一台平板电脑,所以我无法说出平板电脑上发生了什么。但这就是为什么我要在工作表上保存图像控件中的签名的原因。

我不认为我可以使用商业签名包,从我所看到的,这些包锁定整个文件,而不仅仅是单个工作表。

我在网上看到了不少文章,但他们似乎都使用VB.NET或C#.NET,我还没有能够将这些例子翻译成VBA。同样,问题是:如何将inkPicture笔划保存到工作表上的图像上?谢谢!

抱歉,没有任何代码可以显示在这里,我在办公室做了一些工作,但是我在家里发布了这个(是的,在我休息日)。

2 个答案:

答案 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