Fehler 1 "object" enthält keine Definition für "PageBreak", und es konnte keine Erweiterungsmethode "PageBreak" gefunden werden, die ein erstes Argument vom Typ "object" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)
dies erzeugt einen Tausenderpunkt und 2 Nachkommastellen.
Was ich nun suche ist wie ich für eine Spalte, welche immer 8 Zeichen hat ein festes Format vorgeben kann.
z. B.: 123/456/78 (zwei Schrägstriche immer an der gleichen stelle einfügen)
momentang implementiere ich das obere in der OnStartupComplete(), aber wenn der user das Dokument druckt wird das nicht abgefangen.
Weiß jemand wie ich das implementieren muss, oder ob ich da noch etwas zusätzliches implementieren muss?
mit dem gemeinsamen AddIn funtktioniert alles so wie geplant, Der Setup wird erstellt und bei installation des setups auf einem anderen pc wird das AddIn geladen und hinzugefügt.
liegt wohl an der Extensibility-schnittstelle die im Word-AddIn nicht vorhanden ist.
Jetzt muss ich mal schaun ob ich diese Schnittstelle irgendwie in mein Word-AddIn implementieren kann, oder ob ich den Code aus dem word-addin in mein gemeinsames AddIn implementiere.
Enfach kopieren geht nicht, da ich das activeDocument in Application verwende und kann bei gemeinsamen AddIn nicht drauf zugreifen.
Kann man bei dem AddIn einstellen, das es nur bei öffnen eines bestimmten Dokumentes geladen wird?
wo wird das erstellt?
und wie kann ich das selbst erstellen?
Edit: Ok, ich kann zum AddIn Projekt ein Setup-Projekt hinzufügen,
aber wenn ich das dann die dll, die von dem AddIn erzeugt wird zuordne und den Setup starte kommt wieder eine dll raus und kein AddIn.
Ich habe über Visual Studio 2010 ein Word 2010 AddIn erstellt.
Dieses wird auf meinem PC automatisch bei Word zu den COM-AddIns hinzugefügt.
Aber wie kann ich das ich jetzt auf einem anderen PC hinzufügen, z.b. auf dem von meinem Bruder?
Wenn ich COM-AddIns bei mir schaue hab ich den pfad der in die "...bin/Debug/Programm.vsto|vstolocal".
Gut dacht ich, nehm ich die Datei stell sie aufs Netzlaufwerk und mein Bruder kann die dann als Office-AddIn einfügen.
Aber die Datei gibt es gar nicht in dem Verzeichnis, es gibt nur Programm.dll und die ist kein gültiges AddIn.
In dem Fall ist der Thread glaube ich nötig, oder man nimmt nen Timer.
Hab aber grade gelesen dass diese Methode mit den commandbars nur bis Office 2003 funktioniert(angeblich).
Du vermutest richtig mit startFromScratch, eben RibbonXML.
kannst du mir vll bei dem BeforePrint ereignis unter die Arme greifen, das Beispiel ist für Excel und ich schaffe es nicht auf Word umzuschreiben.
private void WorkbookBeforePrint()
{
this.BeforePrint += Word.ApplicationEvents_BeforePrint (ThisApplication_BeforePrint); //Hier was falsch
}
void ThisApplication_BeforePrint(bool Cancel)
{
if (DialogResult.No == MessageBox.Show("Are you sure " +
"you want to print the workbook?",
"Example", MessageBoxButtons.YesNo))
{
Cancel = true;
MessageBox.Show("Print is canceled.");
}
}
bei dem += in der Zeile, fehlt ein Assemblyverweis sagt die Fehlerliste, was müsste da hin?
mir fehlt das deklarieren des Events aber wohin?
public event ApplicationEvents_BeforePrint BeforePrint;
Ich habe mir für die Foreach schleife einen speraten Thread gebaut aber der Fehler besteht weiterhin:
//Es ist ein Word 2010 Document über Visualstudio
//die ersten zwei Zeilen befinden sich in ThisDocument_Startup
Thread t = new Thread(Write);
t.start();
public void Write()
{
Thread.Sleep(10000);
foreach (Office.CommandBar cbar in Application.ActiveWindow.Application.CommandBars)
{
cbar.Visible = false; //Hier tritt Fehler auf
cbar.Enabled = false;
}
MessageBox.Show("Fertig");
}
Fehler: Beim Aufruf einer COM-Komponente wurde ein HRESULT E_FAIL-Fehler zurückgegeben
Hat jemand noch eine Idee, funktioniert das überhaupt?
Dann zum zweiten Punkt mit den Ribbons, hab mich bisschen umgesehen und gefunden wie man alle Ausblenden und eins behalten kann. Jedoch ist das Ribbon "Datei" davon nicht betroffen. Wie kann ich "Datei" ausblenden?
Oder weiß jemand vll eine ganz andere Lösung um das Drucken zu verbieten und/oder das Menü einzuschränken?
ich möchte mit C# Daten in eine bereits geöffnete Datei schreiben(Excel2010).
Es geht dabei um eine Datei die immer wieder aktualisiert werden soll, bisher mache ich es so, dass ich Excel schließen lasse und dann die betreffende Datei mit den aktualisierten Daten neu öffne. Das Funktioniert soweit.
Jetzt möchte es ohne das Schließen schaffen.
Gefunden habe ich dieses Code-Snippet:
Excel.Application app = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
Excel.Worksheet sh = (Excel.Worksheet)app.ActiveSheet;
damit kann ich eine schon geöffnete Excel-Datei nutzen, funktioniert aber leider nur wenn nur eine Datei geöffnet ist, die nur ein Tabellenblatt enthält.
bei mir kann es jedoch der Fall sein das mehere Excel-Dateien geöffnet sind, und die zu aktualisierende Datei hat auch mehrere Tabellenblätter.
In der Registry können Sie unter HKEY_CLASSES_ROOT\CLSID beliebige neue Class-ID anlegen. Wichtig ist dabei, dass diese ID noch nicht vorhanden ist. Eine Class-ID besteht immer aus 8-4-4-4-12 Hex-Ziffern. Damit Sie nicht zufällig eine ID anlegen, die bereits verwendet wird, sollten Sie von hinten hochzählen, eine mögliche ID wäre also {00000000-0000-0000-0000-000000000001}.
Quelle: Was ist eine CLSID?
ich schätze mal die ID wäre die nummer von oben in der Fehlermeldung.
ist die ID in der registry vorhanden oder nicht?
wenn ja dann liegt das an was anderem denke ich.