Autor Beitrag
API
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 08.09.11 05:02 
Hi,

Möchte in einem Word Dokument automatisch Formular Checkboxen anhaken (late binding)

In VBA geht es so:
ausblenden Quelltext
1:
 ActiveDocument.FormFields("meineCheckbox").CheckBox.Value = True					


Mir ist schon gelungen, alle Felder aufzulisten. Nun brauche ich noch Zugriff auf die Checkboxen, jedoch habe ich keine Idee wie das geht (schon viel gegoogelt, jedoch ohne fündig zu werden)

Kann mir da jemand weiterhelfen?

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
    object objWord, objDoc;
    
    Type typWord = Type.GetTypeFromProgID("Word.Application");
    objWord = Activator.CreateInstance(typWord);
    objDoc = objWord.GetType().InvokeMember("Documents", BindingFlags.GetProperty, null, objWord, null);
    
    object[] docPar = new object[4];
    docPar[0] = @"C:\test_.doc";
    docPar[1] = Type.Missing;
    docPar[2] = Type.Missing;
    docPar[3] = Type.Missing;
    
    object objDocu = objDoc.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, null, objDoc, docPar);
    object formFields = objDocu.GetType().InvokeMember("FormFields", BindingFlags.GetProperty, null, objDocu, null);
    int count = (int)formFields.GetType().InvokeMember("Count", BindingFlags.GetProperty, null, formFields, null);
    string fieldValue=string.Empty;
    
    for(int i=1; i<=count; i++)
    {
    
      object field = formFields.GetType().InvokeMember("Item", BindingFlags.GetProperty | BindingFlags.Default | BindingFlags.InvokeMethod , null, formFields, new object[]{i});
      
      fieldValue = (string) field.GetType().InvokeMember("Name", BindingFlags.GetProperty | BindingFlags.Default | BindingFlags.InvokeMethod , null, field, null);
      MessageBox.Show(fieldValue, "fieldValue", MessageBoxButtons.OK);

    }

        typWord.InvokeMember("Quit", BindingFlags.IgnoreCase | BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.OptionalParamBinding, null, objWord, new object[0]);