私は単語の文書に署名行を追加できますが、私のアプローチではうまくいかないと感じています。私は私の見た目を処理するために多くを検索しましたが、何も見つかりませんでした。署名ラインを追加するWord-Excel
はさてここで私がAddSignatureLineのfuncitonを呼び出すときに、このウィンドウは(ShowDialogのような)モーダルを開き、以下を参照して閉じるこのまで、コードが流れていないだけでなく、私のコード
private void CreateNewPage()
{
object missing = System.Reflection.Missing.Value;
object fileName = @"C:\docs\mydoc.docx";
object readOnly = false;
object isVisible = true;
//Start Word and open a document.
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
oWord.Visible = true;
oDoc = oWord.Documents.Open(ref fileName, ref missing, ref readOnly,
ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref isVisible, ref missing,
ref missing, ref missing, ref missing);
// var numberOfPages = oDoc.ComputeStatistics(Word.WdStatistic.wdStatisticPages, false);
object oEndOfDoc = "\\endofdoc";
object paramNextPage = Word.WdBreakType.wdSectionBreakNextPage;
oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertBreak(ref paramNextPage);
//Insert a page break
object breakPage = Word.WdBreakType.wdPageBreak;
object saveOption = Word.WdSaveOptions.wdDoNotSaveChanges;
object originalFormat = Word.WdOriginalFormat.wdOriginalDocumentFormat;
object routeDocument = false;
object what = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToPage;
object which = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToLast;
object count = 3;
oWord.Selection.GoTo(ref what, ref which, ref count, ref missing);
object sigID = "{00000000-0000-0000-0000-000000000000}";
Timer t = new Timer();
t.Elapsed += (sender, args) =>
{
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("~");
t.Stop();
};
t.Interval = 2000;
t.Start();
try
{
oWord.Activate();
SignatureSet signatureSet = oWord.ActiveDocument.Signatures;
// signatureSet.ShowSignaturesPane = false;
Signature objSignature = signatureSet.AddSignatureLine(sigID);
objSignature.Setup.SuggestedSigner = "docSigner";
objSignature.Setup.SuggestedSignerEmail = "[email protected]";
objSignature.Setup.ShowSignDate = true;
// dynamic shape = objSignature.SignatureLineShape;
}
catch (Exception ex){}
oWord.Documents.Save();
oWord.Quit();
try
{
Marshal.ReleaseComObject(oWord);
}
catch (Exception){}
}
..です
私はこれをsendkeyを使用してバイパスしていますが、それは良い方法ではないことがわかりました。しかし、他の解決策が見つからない場合は、Win32 APIを使用してこのウィンドウ(単語の子ウィンドウ)を見つけることを試みます。
これを回避するにはどうすればいいですか?何千もの文書があり、私もより高速な方法を探しているからです。
この署名行を追加すると、DocuSignで文書に署名することができます。しかし、文書に署名行がない場合、DocuSignは文書をデジタル署名しません。次に、この行を追加する必要があります。
おかげさまで興味深いようです。私はそれをやろうとしているが、私は第3ステップで立ち往生している。このテンプレートをC#プロジェクトにインストールするには?私はアドインを作成していません。 Office Interopを使用する通常のexeです。 – unbalanced
インストール方法を知りました。WindowsFormsApplication1.exeで 'System.Runtime.InteropServices.COMException'型の未処理の例外が発生しました 追加情報:要求されたコレクションのメンバーが存在しません。ここではvar buildingBlock = template.BuildingBlockEntries.Item( "TestSignature"); template.BuildingBlockEntries.Countがゼロであるため、 – unbalanced
@unbalanced:混乱して申し訳ありません。私は、 'Application.AddIns.Add'を使ってWordに読み込むことができるように、そのテンプレートを実行時に利用可能にする必要があるということを意味しました。 –