Laden...
T
Tweak90 myCSharp.de - Member
Fachinformatiker - Anw.Entwicklung (Azubi) NDS Dabei seit 16.01.2012 24 Beiträge
Benutzerbeschreibung

Forenbeiträge von Tweak90 Ingesamt 24 Beiträge

16.10.2012 - 13:41 Uhr

Danke für den Hinweis 😃 das hilft 😃

16.10.2012 - 12:22 Uhr

Ich glaube ich habe den Fehler gefunden und gelößt, ich schreibe den Encodierten Text in eine einzige Line (Appendline) und ersetze dafür manuell die \n\r durch den enstprechenden Zeichensatz, das ist Schwachsinn... ich kann es leider erst zuhause testen, werde hier aber dann meine Lösung präsentieren sollte es so funktionieren 😉

Tweak90

16.10.2012 - 11:48 Uhr

Danke für die Antwort, doch das hilft mir net weiter... UTF_8 charset ist vorraussetzung, es sind also immer 2 Parts "=A=B" zB....

EDIT*
Das Problem scheint hier zu liegen:
==0D=0A
Warum da 2 gleich zeichen stehen ist mir n rätsel...

16.10.2012 - 11:31 Uhr

Als kleiner Add:
http://www.webatic.com/run/convert/qp.php

die seite macht genau das was ich möchte 😛

16.10.2012 - 01:40 Uhr

Hallöchen mal wieder,
nach langer Google und Forensuche komme ich nun in letzter Instanz mal wieder hier her. Meine Frage:
Wie kriege ich einen String Quted-Printable ( UTF-8 ) encodiert?

Also ich habe folgenden Beispielstring:

abcdefghijklmnopqrstuvwxyz ,.-;:_#+'~><|1234567890,-/+`´!"§$%&/()=?²³{[]}^°€®©

welcher encodiert so:

abcdefghijklmnopqrstuvwxyz ,.-;:_#+'~><|1234567890,-/+`=C2=B4!"=C2=A7$%&/=
()=3D?=C2=B2=C2=B3{[]}^=C2=B0=E2=82=AC=C2=AE=C2=A9

aussehen würde....

wie bekomme ich das mit CSharp als "Neuling" am besten hin? Die Dekodierung war interessanterweise überhaupt kein problem, so kann ich mit meinem Programm aus dem 2en Text locker den oberen Text decodieren. Dafür nutze ich die Klassen von chilKat (http://www.chilkatsoft.com).

Nur das Enkodieren will nicht. Ich lege mir einen chilkat.ckstring an, übergebe über setStirng den Text und rufe dann qpEncode auf.
wenn ich mir den Encodierten String aber zurückgeben lasse erhalte ich folgenden Text:

abcdefghijklmnopqrstuvwxyz ,.-;:_#+'~><|1234567890,-/+`=C2=B4!"=C2=A7$==0D=0A%&/()=3D?=C2=B2=C2=B3{[]}^=C2=B0=E2=82=AC=C2=AE=C2=A9

welcher decodiert dann so aussieht:

abcdefghijklmnopqrstuvwxyz ,.-;:_#+'~><|1234567890,-/+`´!"§$

Zum Vergleich:

abcdefghijklmnopqrstuvwxyz ,.-;:_#+'~><|1234567890,-/+´!&quot;§$ abcdefghijklmnopqrstuvwxyz ,.-;:_#+*&#39;~&gt;&lt;|1234567890,-*/+´!"§$%&/()=?²³{[]}^°€®©

Es fehlt also einiges...

Wenn ich den Text mehrmals hintereinander eingebe, egal ob mit leerzeichen oder mit absätzen oder sonst wie, so kommt auch immernur der eine Text und dieser bis zum $ Zeichen zurück....

Der Codierte Text enthält jedoch alles:

abcdefghijklmnopqrstuvwxyz ,.-;:#+'~><|1234567890,-/+=C2=B4!&quot;=C2=A7$==0D=0A%&amp;/()=3D?=C2=B2=C2=B3{[]}\^=C2=B0=E2=82=AC=C2=AE=C2=A9=0D=0Aabcdefghijklmnopqrstuvwxyz ,.-;:_#+*&#39;~&gt;&lt;|1234567890,-*/+=C2=B4!"=C2=A7$==0D=0A%&/()=3D?=C2=B2=C2=B3{[]}^=C2=B0=E2=82=AC=C2=AE=C2=A9=0D=0Aabcdefghijklmnopqrstuvwxyz ,.-;:#+'~><|1234567890,-/+`=C2=B4!"=C2=A7$==0D=0A%&/()=3D?=C2=B2=C2=B3{[]}^=C2=B0=E2=82=AC=C2=AE=C2=A9

Brauche des für meine Anwendung weil diese eigentlich kaum etwas anderes machen soll als ein Dokument zu zerlegen, gewisse Eigenschaften wie Datum usw welche auch im text stehen auszugeben und halt den Body in lesbarer Form zurückgeben.

Hoffe hier hat wer ne Idee und vllt auch nen Codebeispiel für mich - würde mich freuen.

Liebe Grüße
Tweak90 :rtfm:

05.09.2012 - 16:40 Uhr

Jao danke, das funktioniert schonmal ganz gut,
für Interessenten hier der Quelltext:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Outlook = Microsoft.Office.Interop.Outlook;
using Office = Microsoft.Office.Core;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Outlook;

namespace signatureHandler
{
public partial class ThisAddIn
{
Properties.Settings userData = null;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Application.ItemSend += new
Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
LoadConfigSettings();
}

private void LoadConfigSettings()
{
userData = new Properties.Settings();
sigHandlerCfg.Current.mailending = userData.mailending;
sigHandlerCfg.Current.signature = userData.signature;
}

private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}

void Application_ItemSend(object Item, ref bool Cancel)
{
bool shouldAddSignature = false;
Outlook.Recipient recipient = null;
Outlook.Recipients recipients = null;
Outlook.MailItem mail = Item as Outlook.MailItem;
if (mail != null)
{
string mailAdressToCheck;
try
{
foreach (Outlook.Recipient rec in mail.Recipients)
{
if (rec.AddressEntry.AddressEntryUserType == OlAddressEntryUserType.olExchangeUserAddressEntry)
mailAdressToCheck = rec.AddressEntry.GetExchangeUser().PrimarySmtpAddress;
else
mailAdressToCheck = rec.Address;

if (!mailAdressToCheck.EndsWith(userData.mailending))
{
shouldAddSignature = true;
}
}
}
catch
{
shouldAddSignature = true;
}
if (shouldAddSignature)
{
string addToBody = userData.signature;
if (!mail.Body.EndsWith(addToBody))
mail.Body += addToBody;
}
recipients = mail.Recipients;
if (recipient != null) Marshal.ReleaseComObject(recipient);
if (recipients != null) Marshal.ReleaseComObject(recipients);
}
}

#region VSTO generated code

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}

#endregion
}
}


In den properties 2 Strings hinterlegt für mailending und signature
das config window hat net richtextbox und ne textbox, dazu 2 buttons:

hier der text:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace signatureHandler
{
public partial class sigHelperConfig : Form
{
Properties.Settings userData = null;

public sigHelperConfig()
{
InitializeComponent();
userData = new Properties.Settings();
LoadConfigSettings();
rtbSignature.Text = userData.signature;
tbMailEnding.Text = userData.mailending;
}

private void LoadConfigSettings()
{
userData = new Properties.Settings();
sigHandlerCfg.Current.mailending = userData.mailending;
sigHandlerCfg.Current.signature = userData.signature;
}

private void btnSave_Click(object sender, EventArgs e)
{
userData.mailending = tbMailEnding.Text;
userData.signature = rtbSignature.Text; ;
userData.Save();
this.DialogResult = DialogResult.OK;
this.Close();
}

private void btnAbort_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Abort;
this.Close();
}
}
}

zuletzt das ribbon mit nem button für die einstellungen:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Tools.Ribbon;

namespace signatureHandler
{
public partial class signatureHandler
{
private void signatureHandler_Load(object sender, RibbonUIEventArgs e)
{

}

private void btnConfig_Click(object sender, RibbonControlEventArgs e)
{
sigHelperConfig config = new sigHelperConfig();
config.ShowDialog();
}
}
}

die sigConfig:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;

namespace signatureHandler
{

class sigHandlerCfg
{


private static sigHandlerCfg fCurrent;
public static sigHandlerCfg Current
{
get
{
if (fCurrent == null)
fCurrent = new sigHandlerCfg();
return fCurrent;
}
}
private sigHandlerCfg()
{
}

public string mailending
{
get;
set;
}
public string signature
{
get;
set;
}
}
}

jetzt muss nur die richtextbox in der die Signatur drin ist weg und dafür ein Auswahldialog für die bereits hinterlegten Signaturen von Outlook (standard usw...).

Dazu sollte die Signatur nicht an die Email an gehangen werden sondern schon im Editor sichtbar sein und im Falle des Falles gelöscht werden.

Auch sollte die Signatur als signatur element und nicht als Plaintext drin stehen, damit diese auch sauber erkannt wird, nicht das am ende auf grund einer kleinen änderung von hand ne doppelte signatur hinzukommt... aber das sind alles nur Spielereien die ich nachträglich hinzufüge.

Danke auf jeden Fall für die Antwort, wenn das Projekt abgeschlossen und brauchbar ist lade ich es hier hoch für mögliche Interessenten 😃

05.09.2012 - 10:50 Uhr

Guten Tag,
ich wollte mal fragen ob es möglich ist beim Erstellen einer Email zu schauen wer der Empfänger ist und dann entsprechend dem Empfänger die Signatur zu ändern.

Folgendes Scenario liegt vor:
Innerhalb unseres Betriebes haben wir einheitliche Signaturen, welche beim Kontakt mit Kunden natürlich übermittelt werden sollten. Bei hausinternen Mails sollen diese aber nicht mitgesendet werden.

Dies dient zum einen der Übersichtlichkeit, zum anderen werden Mails oft auch einfach ausgedruckt und dabei kostet die Signatur schon ne halbe Seite.

Vorstellen würde ich mir das wie folgt:
Beim Verlassen der CC oder Empfänger box wird geprüft welche EMails eingetragen sind,
für jede EMail wird dann geprüft:
Hat die EMail die Endung @firmenname.de
oder:
Hat die Adresse den genauen Wortlaut, z.B.: verteiler@local
dafür könnte man ja im ribbon ne einstellung hinterlegen wo man mail endungen oder genaue Mailadressen hinterlegen kann. (Theoretisch nur eine Liste wp immer EndsWith abgefragt wird... tuts dann ja auch für den ganzen Wortlaut 😉)

Sollte eine oder mehr als eine EMail Adresse nicht auf den Filter zutreffen, so werden alle Empfänger die EMail mit Signatur erhalten, ansonsten ohne.

Vielleicht gibt es da ja schon was, jemand hat schonmal was ähnliches gemacht oder jemand kann mir einfach bestätigen, dass es geht oder mir sagen warum nicht.

Auf ein AddIn für Outlook und auf Outlook selbst sind wir angewiesen, weil schon andere Firmeninterne AddIns genutzt werden.

Liebe Grüße und Danke im Vorraus
Tweak90

03.09.2012 - 15:14 Uhr

Die Formulare werden vom Kunden erstellt, das verwendete Tool kann daher variieren.. Es werden auch stetig andere Formulare verwendet, es muss also rundum kompatibel mit allen PDFs sein... 😕
Schade, aber wie es aussieht wird es wohl darauf hinauslaufen, dass der Kunde seine Formulare manuell importieren muss.

03.09.2012 - 14:37 Uhr

danke für die Antwort, aber:
das problem ist nur, dass ich auf das Formular nicht mehr zugreifen kann... Über ActiveX führe ich ja auch nur den Reader aus...

Ich will es nicht automatisch füllen, da ich vorher nicht weiß was in dem Formular gefordert wird - die Eingabe macht der Nutzer. Ich will das ausgefüllte Formular am Ende speichern um es anschließend bei der nächsten Sync an den Server zu übertragen.

Wenn es keinen weg gibt dies programmtechnisch zu lösen dann fehlt zum einen echt was elementares finde ich (mit word forms mache ich das schon länger) zum anderen muss ich den nutzer dann halt zwingen seine ausgefüllte nformulare selbst zu importieren... wäre halt nur schade weil wer weiß welcher dau sich da grad durch mein programm klickt..

03.09.2012 - 10:40 Uhr

Guten Tag,
für ein Projekt brauche ich etwas hilfe, da mich tagelanges Googlen nicht wirklich weiter gebracht hat hoffe ich nun auf das myCsharp Forum.

Also es geht darum ein PDF File in einer WPF Anwendung anzuzeigen, die PDF-Files wähle ich aus einer Liste aus (bekomme die PDFs vom server). So weit so gut noch ist das kein Problem.

Jetzt wirds tricky:
Das in der Anwendung angezeigte PDF entspricht funktionell einem Formular, hat also checkboxen und textboxen die ausgefüllt werden können.

Wenn das Formular ausgefüllt wurde, so soll mit einem Klick auf einen Button das ausgefüllte Formular, welches ich in der Anwendung anzeige gespeichert werden.

Bei der nächsten Sync mit dem Server werden die ausgefüllten Formulare übertragen.

Kennt wer eine Möglichkeit auf das Formular zuzugreifen? iTextSharp und pdfsharp und so weiter sind leider eher dafür gedacht PDFS anzulegen, einzulesen und zu erstellen, keins davon kann aber auf eine angezeigt PDF zugreifen und diese ablegen....

Liebe Grüße
Tweak90

19.07.2012 - 12:02 Uhr

Hat sich erledigt, ein unbehandelte Ausnahme hat dafür gesorgt das Wordd as AddIn rauswirft... jetzt geht alles 😃

Greets
Tweak90

PS:

An alle die das gleiche Problem haben, einmal passiert wird das Word AddIn meist so schnell nicht wieder geladen, einfach die Projektmappe bereinigen und danach neu ausführen... dann wird das AddIn erstmal wieder geladen 😉

19.07.2012 - 11:07 Uhr

Guten Tag,
habe ein kleines Problem mit meinem Word AddIn für Office 2010, das AddIn ist fertig und funktioniert auch so wie es soll, nur leider deaktiviert sich es mit jedem Word-Start wieder, so dass ich immer über Datei -> Optionen ->AddIns -> Com-AddIns ->Gehe zu
Das AddIn neu mit einem Häkchen aktivieren muss.

Das AddIn sollte aber eigentlich immer geladen werden (ist auch nicht Dokumentenabhänig).

Betriebssystem ist Windows 7 64Bit und Office Prof. 2010 Plus

Kann mir wer helfen?

Liebe Grüße
Tweak90

*EDIT
Wenn ich in der Registry den LoadBehavior auf 3 setze lädt es sauber mit, nur kann ich nicht von jedem Kunden verlangen in der Registry den Wert zu ändern... wo lege ich das im Projekt fest?

04.06.2012 - 11:24 Uhr

Guten Morgen,
mich plagt seit kurzem folgendes Problem, ich habe ein Outlook AddIn geschrieben, welches auf allen PCs mit .Net 3.5 oder 4.0 super läuft, ist aber nur das 4.0 Client Profile installiert, so werden die visual studio tools für Office Lauftzeit nicht mitinstalliert und ich kann das AddOn nicht installieren. 😕

problem:
Bei den "Erforderlichen Komponenten" steht nur : Microsoft Visual Studio Tools für Office Laufzeit(x86 und x64) Language Pack - DEU

wenn ich das mitinstalliere, installiere ich dann die kompletten VSTO oder nur das LanguagePack?

Liebe Grüße
Tweak90

15.05.2012 - 14:35 Uhr

Es gibt tatsächlich Leute die meinen das die länge der Namen im Code möglichst kurz und unleserlich sein sollten.){gray}

Kay sry, wollt dich net angreifen 😉 bin nur net so sehr in der thematik drin das ich hier sonderlich hilfreich wäre bei den meisten posts, deswegen stell ich meist eher fragen oder lese andere posts die zu meinem problem passen, da ist mir das noch net so aufgefallen bis jetzt 😉

Und zum Problem, hast du den ersten Link von Th69 gelesen?

jao hab ich,
habs jetzt einfach wie folgt angepasst:

        public static string GetCreateTableCommand()
        {
				return @"CREATE TABLE tableBase(
						ID INTEGER NOT NULL PRIMARY KEY,
						a SHORT,
						b TEXT,
                        c SHORT,
                        d SHORT
						)"; 					
        }
			public static void UpdateTable()
			{
				CSDatabase.ExecuteNonQuery("ALTER TABLE tableBase RENAME TO tableBasetemp");
				CSDatabase.ExecuteNonQuery(GetCreateTableCommand());
                CSDatabase.ExecuteNonQuery("INSERT INTO tableBase (a,b,c,d) SELECT a,b,c,d FROM tableBasetemp ");
				CSDatabase.ExecuteNonQuery("DROP TABLE tableBasetemp");			
			}

ID ist automatisch "Auto increment"

problem damit nun behoben, thread kann closed.

15.05.2012 - 13:43 Uhr
		public static void UpdateTable()
		{
			CSDatabase.ExecuteNonQuery("ALTER TABLE tableBase RENAME TO tableBasetemp");
			CSDatabase.ExecuteNonQuery(GetCreateTableCommand());
			CSDatabase.ExecuteNonQuery("INSERT INTO tableBase a,b,c,d FROM tableBasetemp");
			CSDatabase.ExecuteNonQuery("DROP TABLE tableBasetemp");			
		}
        public static string GetCreateTableCommand()
        {
				return @"CREATE TABLE tableBase (
						a SHORT NOT NULL PRIMARY KEY,
						b TEXT,
                        c SHORT NOT NULL PRIMARY KEY,
                        d SHORT NOT NULL PRIMARY KEY
						)"; 					
        }

so sollte es gehen

habe die createTable methode seperat geschrieben um hier bei der neuinstallation eine gleich passende anzulegen, genau wie es vorher war, nur halt mit den passenden pks.

und nein, die tabelle stammt nicht aus den 80ern aber danke für dein ach so hilfreichen post troll
ich habe die namen der spalten und der tabelle geändert, die originale sind natürlich etwas aussagekräftiger und sinnvoller als die hier verwendeten.

habe sie jetzt durch Buchstaben ersetzt (hier im forum), tableBase und temp scheint mir für den zweck hier ausreichend.

Fehlermeldung:
SQLite unterstützt nur einen PK!

Damit ist die sachen an dieser stelle dann gegessen.
Neue Spalte mit fortlaufender ID als PK wird eingefügt... schade drum

15.05.2012 - 12:58 Uhr
ALTER TABLE tableBase RENAME TO tableBasetemp;
CREATE TABLE tableBase (
a SHORT NOT NULL PRIMARY KEY,
b TEXT,
c SHORT NOT NULL PRIMARY KEY,
d SHORT NOT NULL PRIMARY KEY
)
INSERT INTO tableBase a,b,c,d FROM tableBasetemp;
DROP TABLE tableBasetemp;

So weit hab ich den SQLite befehl nun ausgebaut, mal sehen wenn ich zum testen komme ob es so auch klappt.

Versuche hier die betroffene Tabelle um zu benennen und anschließend eine neue tabelle anzuelegen, anschließend sollen die daten rüber und die alte tabelle gelöscht werden.

Bin jam al gespannt

15.05.2012 - 11:54 Uhr

verwendetes Datenbanksystem: <SQLite>

Guten Tag,
ich habe in meiner Datenbank eine Tabelle mit 3 Spalten eingerichtet, bei welcher ich <ID> als pk festgelegt habe, nun muss ich aber 2 weitere spalten als primary key festlegen, da ein und die selbe ID mehr als einmal vorkommen kann und ich hier in nen konflikt gerate...

Meine Frage:
Wie kann ich nach einem Softwareupdate PKs hinzufügen?

19.01.2012 - 10:13 Uhr

Inwieweit bist du mit .dot/.dotx/*.dotm Templates und dem CustomizeContext vertraut? Du kannst die 2. Word Instanz starten und via COMAddin.Object mit deiner neuen Addin Instanz kommunizieren. Sag ihm auf diese Art einfach was es tun soll.

Bin nicht wirklich tief in der Thematik drin, da es mein erstes WordAddIn ist... Und nunja Csharp bin ich als azubi nun auch erst seit ein paar monaten am nutzen...

Also das ist der bisherige Code wenn die tabelle voll ist:

string tempDataPath = System.IO.Path.GetTempFileName();
                File.WriteAllBytes(tempDataPath, namespace.Properties.Resources.template);
                Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
                oWord.Documents.Open(tempDataPath);
                oWord.Visible = true;
                oWord.Activate();

diesem oWord soll ich nun via oWord.ComAddIns kla machen das er mein addin übernehmen soll? wie genau? nen textbeispiel?

17.01.2012 - 12:07 Uhr

Um ein Word-Template...

Dieses besitzt nen Ribbon eintrag (Word 2010) über welchen ich einn Winform öffne, dieser enthällt eine Tabelle und übernimmt die daten aus einer tabelle auf dem word template.

Innerhalb des Winform wird die Tabelle dann bearbeitet (mit datenbankzugriff) und anschließend werden die daten aus dem winform ins word geschrieben...

das problem ist halt, das die tabelle auf dem wordform ne beschränkte größe hat, sollte diese tabelle voll sein, so habe ich über einen button die möglichkeit eine weitere Tabelle hinzuzufügen, diese wird aber in einem neuen Wordprozess geöffnet und soll auch hier wieder auf die selbe art und weise zu editieren sein.

17.01.2012 - 10:18 Uhr

Möchte hier jetzt net einen auf Thread-Nekrophilen machen, aber die Frage steht noch immer im raum 😉.

Möchte wirklich nur ungern das AddIn kopieren und als 2es AddIn für das Zusatzformular installieren müssen...

16.01.2012 - 15:15 Uhr

Passend zu meiner letzten Topic, welche nun erfolgreich gelöst wurde bleibt zu meinem Word AddIn noch eine Frage offen,

wie bringe ich einem Word-AddIn bei, dass es nicht nur bei dem Template angezeigt wird, mit welchem ich das AddIn erstellt habe, sondern auch noch bei einem weiteren?

Fals die Frage nicht so gut verständlich war:

Ich habe ein AddIn erstellt, mit dem ich ein Word Template (*.dot) mit daten fülle, sollte ich die in dem Template erhaltene Tabelle füllen, so öffne ich ein weiteres Dokument, in welchem nur die Tabelle enthalten ist (also ich habe nur den Tabellenteil des ersten Templates als ein zweites Template angelegt).
Mein AddIn zeigt sich aber nur, wenn ich das Haupttemplate geöffnet habe (klar, damit habe ich das AddIn ja auch erstellt). Es wäre aber wünschenswert, dieses AddIn auch für das zusatztemplate un dem nur die Tabelle ist anzuzeigen, dies wäre schön, da ich dann kein zweites AddIn schreiben muss (auch wenns nur copy und paste ist).

Wenn ich nälich ein 2es AddIn schreibe, so muss ich im ersten immer die Resource (template 2) austauschen, damit das AddIn nach änderungen an diesem Template noch funktioniert....

Wäre also einfach leichter und besser Wartbar wenn ich ein AddIn bei 2 verschiedenen Templates anzeigen kann).

Hoffe das ist irgendwie nicht all zu verwirrend.

Liebe Grüße
Tweak90

16.01.2012 - 15:01 Uhr

So weit so gut - kriege nun die datei geöffnet und angezeigt 😃 alles underbar, nun stellt sich nurnoch die frage, wie aktiviere ich das AddIn auch für das Template, welches ich mir aus den Resourcen gezogen habe? das AddIn soll ja lediglich für diese beiden Templates angezeigt werden... für alle anderen soll das Ribbon verschwinden...

dafür erstelle ich aber mal ne neue Topic, denn das Thema um das es hier ging wurde ja gelöst 😃

ps.:

der vollständigkeit halber hier der funktionierende Text für den Zugriff auf ein Template aus den Resourcen:

                   
                    string tempDataPath = System.IO.Path.GetTempFileName(); 
                    File.WriteAllBytes(tempDataPath, namespace.Properties.Resources.filename);                    
                    Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
                    oWord.Documents.Open(tempDataPath);
                    oWord.Visible = true;    
 

Hoffe damit konnte ich vllt schon dem einen oder anderen helfen, habe gesehen das diese Frage im Internet oft gefragt wurde, aber nie sauber beantwortet....

16.01.2012 - 13:53 Uhr

Du solltest nicht einfach nach "\temp" schreiben sondern per System.IO das echte Tempverzeichnis holen.
Und dann solltest du natürlich auch den Namen der datei etwas anpassen, sei es mit einem Datum versehen oder auch per System.io einen ganzen Tempnamen erstellen lassen.

Danke für deine Antwort,:

Ich habe weiterhin das Berechtigungsproblem bei diesem Code:

                    
                    string tempDataPath = System.IO.Path.GetTempPath();
                    string tempDataPathShort = tempDataPath.TrimEnd('\\');
                    File.WriteAllBytes(tempDataPathShort, namespace.Properties.Resources.filename);
                    Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
                    oWord.Documents.Open(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "filename.dot"));


das problem mit dem datei überschreiben ist schon geklärt^^ 😉 mir gehts iwrklich nurnoch ums datei auf die festplatte schreiben und öffnen...

Das problem mit dem AddIn auch fürs andere Dokument öffnen ist auch noch offen, notfalls kann ich aber auch fürs neue Form das AddIn neu schreiben (copy/paste) und das am ende in der installation zusammenfassen... das wäre nicht das problem 😉

16.01.2012 - 12:01 Uhr

Guten Tag,

mein Problem ist folgendes:

ich schreibe im Moment ein AddIn zum Füllen eines Word Templates mit Daten aus einer Datenbank, dies klappt soweit auch wunderbar, jedoch habe ich eine Tabelle, welche eine Maximale anzahl an Zeilen zur Verfügung stehen hat. Wenn ich diese überschreite, so möchte ich, dass ein Template, welches in in das Projekt als Resource eingebettet habe, geöffnet wird.
Hier ist das Problem auch schon erreicht - ich krieg diese Datei einfach nicht aus der Resource geöffnet, so habe ich nach langem googlen über einen Umweg eine möglichkeit gefunden, welche beschreibt, dass ich die Datei aus der Resource erst auf die Platte schreibe, und den Pfad der neuen Datei als Zielort angebe.

Hier komme ich an 2 Problematiken, zum einen - wenn auch die 2e Tabelle voll ist darf, bzw kann er ja nicht wieder eine kopie erstellen, da die erste ja geöffnet ist, zum anderen habe ich das problem, das mir der Zugriff verweigert wird. Ausführen als Administrator ist keine alternative.

Ich hoffe mir kann wer helfen.

File.WriteAllBytes("\\Temp", namespace.Properties.Resources.filename);
 Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application(); 
oWord.Documents.Open("\\Temp\\filename");

Das neue Dokument ist NICHT das selbe wie das alte, da es nur die Tabelle enthält, trotzdem muss auch für dieses mein AddIn geladen werden.

Liebe Grüße
Tweak90