2016-05-11 6 views
4

私の会社の書式の中に手書きデジタル署名を追加したいと思っていました。目標はかなり簡単で、文書を選択し、署名パッドを使用して(Excel's Ink Toolsで行うことができる)署名を追加し、ファイルをサーバーにPDFとして保存します。これは、署名を得るためにフォームを印刷してからスキャンする必要性を排除します。インクツール - VBA - Excelデジタル署名/図面

ファイル操作と検索のメインインターフェイスとしてExcelを使用していますが、残念ながらVBAを使用してExcel - Ink Toolsを使用するための参照/ライブラリが見つかりませんでした。

あなたは正しい方向にいくつかの参考文献を見つけるか、始める方法の簡単なスニペットを教えてください。Ink ToolsオブジェクトはVBAにありますか?または署名を取得するために別のソフトウェアを使用する必要がありますか?

ありがとうございます。

ミゲル

は、Excel

答えて

1

に署名画像を挿入するためにユーザーフォームを使用する方法についてのアップデートで私自身の回答を編集した、それはあなたが後にしているインクエディットコントロールですか?

これは、あなたがツール - で見つけることができる標準ライブラリの一つである>参照

References window showing InkEdit library

+1

こんにちは@Macro Man、右の方向に私を指して助けてくれてありがとう、 'Microsoft InkPicture Control'を' Tools-> Additional Controls'に追加する必要があっただけでしたが、あなたのためではありませんでした。私は後で私の発見の質問を更新してくれます。 –

1

更新:@macro男は私を指摘した後

こんにちはみんな、

正しい方向に私はeSignatureを稼動させるのに役立つ資料を見つけました。

私はこれは私が実現した他のStackoverflow responseでのInkEditコントロールと相まって、MSDN Digital Ink Signatures - Concepts and TechnologiesとのPictureBox /ユーザーフォームを通じてVB.netとC#のインク回収についての話InkPicture Class上のいくつかの材料を見つけましたそのVBAsツールボックスには、ユーザーフォームを介して手書きの電子署名を収集するために利用できるInkPicture Control追加コントロールがありました。

ステップバイステップの下に見つけてください:

追加の制御にVBAsツールボックスで[ツール]> [その他のコントロールを使用すると、署名ユーザーフォームを作成することを可能にするインクピクチャコントロールがあります。

enter image description here

追加されたインクピクチャは、ツールボックス上の他のコントロールとして使用することができたら。

enter image description here

その署名要求のユーザーフォームを初期化する場合。私は描画パッドを使用していますが、他のハードウェアも同様に動作するはずです。

enter image description here

そしてサイズを変更し、Word文書に追加するサーバーに一時バージョンを保存私の場合には、必要に結果の画像を保存または利用。


編集:

ワークシート/特定のセルに入力された画像署名にユーザーフォームインクピクチャを使用する方法については、hereで同様の質問に答えた後、私はそれらのために、この答えを編集しようと思いました興味がある。

以下のコードを使用すると、ユーザーフォームにサインインしてイメージを保存し、イメージを節約し、InkPictureをワークシートに追加して、一時イメージを消去できるようにすることができます。

ユーザフォームを設定します(このように、いくつかのオプションが追加されています)。ユーザフォームの名前はSignature_padです。必要な必須オプションはPrivate Sub Use_Click()です。

enter image description here

これは、ユーザーフォーム内のコードです:以下

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と呼ばれる)され、あなたがbuttonでこれSubを呼び出すことができます別の形式をとることができます。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 

あなたbuttonsの名前と一致するUserform NameButtons Nameまたはコードのいずれかの名前を変更してください。

関連する問題