我正在尝试使用VBA代码保存inkpicture内容,只能使用vb.net或C

我正在尝试使用VBA代码保存inkpicture内容,只能使用vb.net或C,vba,Vba,我发现这段代码缺少最后一行中的函数调用,关于save to file命令是什么的想法,我将把它混在一起 'CODE to SAVE InkPicture to FILE Dim objInk As MSINKAUTLib.InkPicture Dim bytArr() As Byte Dim File1 As String File1 = "C:\" & TrainerSig & ".gif" Set objInk = Me.InkPicture2.Object If objIn

我发现这段代码缺少最后一行中的函数调用,关于save to file命令是什么的想法,我将把它混在一起

'CODE to SAVE InkPicture to FILE
Dim objInk As MSINKAUTLib.InkPicture
Dim bytArr() As Byte
Dim File1 As String
File1 = "C:\" & TrainerSig & ".gif"
Set objInk = Me.InkPicture2.Object
If objInk.Ink.Strokes.Count > 0 Then
    bytArr = objInk.Ink.Save(2)
    fSaveFile bytArr, File1
End If

下面是一个在Access 2007中将带有VBA代码的.InkPicture保存到.isf文件的拙劣版本


我尝试了zaphod23的解决方案,但它对我无效。我还觉得很奇怪,解决方案会以.isf格式保存,通常人们希望将inkPicture内容保存到图像文件jpg、gif等中。。我花了一段时间寻找这段代码并将其组合在一起,所以我将把它发布在这里,以供其他可能会发现它有用的人使用

这将获取Microsoft Access表单中用于签名面板的inkPicture对象,将内容保存为gif图像,然后将图像放入表单上的图像对象中,这非常有用,因为在打印表单时inkPicture内容不会显示

On Error Resume Next
Dim imgBytes() As Byte
Dim sFilePathAndName As String

imgBytes = Me.signaturePanel.Ink.Save(IPF_GIF)

If (UBound(imgBytes) = 0) Then
    MsgBox ("Please enter your signature")
Else
    sFilePathAndName = (Application.CurrentProject.Path & "\images\system\signatures\" & "signature")
    Open sFilePathAndName For Binary Access Write As #1
    Put #1, 1, imgBytes
    Close #1
    Me.imgSignature.Picture = sFilePathAndName
End If

你回答了你自己的问题?这是一项肮脏的工作,但总得有人去做,我也希望有更多的解决办法。现在正在尝试将墨水与背景图片合并
On Error Resume Next
Dim imgBytes() As Byte
Dim sFilePathAndName As String

imgBytes = Me.signaturePanel.Ink.Save(IPF_GIF)

If (UBound(imgBytes) = 0) Then
    MsgBox ("Please enter your signature")
Else
    sFilePathAndName = (Application.CurrentProject.Path & "\images\system\signatures\" & "signature")
    Open sFilePathAndName For Binary Access Write As #1
    Put #1, 1, imgBytes
    Close #1
    Me.imgSignature.Picture = sFilePathAndName
End If