PDA

Vollständige Version anzeigen : Programm, das Word und Excel steuert


bertin11
21.08.2008, 16:05
Hallo zusammen!

Ich bräuchte ein Programm in Visual Studio 2008 oder 2005, welches Word und Excel steuert.. Hat da jemand schon mal etwas gemacht? Es gibt ja die Vorlagen AddIns in VS.. aber ich bin total neu auf dem Gebiet.. das Problem ist, ich brauch das ziemlich schnell, also falls schon jemand so was in der Art hätte, wäre ich sehr dankbar, wenn er mir helfen könnte!!!

Vielen Dank schon mal!

Viele Grüße!
Claudia

hcscherzer
21.08.2008, 17:45
Moin Claudia,
was genau soll denn in Word und in Excel 'gesteuert' werden?

SWR
21.08.2008, 23:58
Für den Einstieg in die entsprechende Programmierung mit den Visual Studio Tools 3.0 (Visual Studio 2008) gibt's zwei ganz gute (englischsprachige) Videos:

Video 1 hier (klick) (http://channel9.msdn.com/posts/DanielMoth/Office-Task-Panes-and-Actions-Pane-in-VS2008/)
und
Video 2 (klick) (http://channel9.msdn.com/posts/DanielMoth/Word-Content-Controls-in-Visual-Studio-2008/)

Gruß
Stephan

bertin11
22.08.2008, 07:12
Also, ich brauch z.B. eine Vorlage für einen Brief in Word 2007, die automatisch mit Werten, wenn man irgendwo als Datensatz die Werte eingibt und auf nen Button drückt, befüllt wird.. Das soll automatisch ablaufen..

Wir nutzen Sharepoint, weiß nicht, ob ihr es kennt, da sollen die Werte eingegeben werden in ne Liste..

Viele Grüße!
Claudia

SWR
22.08.2008, 13:12
Ich habe das hier allerdings mal mit einer Datenbank auf dem SQL-Server versucht - ob sich das mit Sharepoint analog handhaben lässt, kann ich nicht sagen, da bei mir kein Sharepoint vorhanden ist und sowas auch niemals vorhanden sein wird :grins:

Um z. B. in Word 2007 einen Aufgabenbereich (Custom Task Pane) zu erstellen, der als separates Fenster oben, unten, rechts oder links bei de Arbeit mit einem Dokument eingeblendet werden kann und der z. B. eine Liste mit einer Datenbanktabelle (live verbunden, stets aktuell und auch im Custom Task Pane online pflegbar) anzeigt, in der man z. B. in einer gewünschten Zeile die jeweiligen Daten an der Position einer Textmarke einfügen kann, könnte man so vorgehen:


In Visual Studio 2008 neues Projekt anlegen.
Projektvorlage unter "Office" - "2007", dort dann "Word 2007-Add-In"
Es wird automatisch ein Codegerüst erstellt, das wir gleich mit Leben füllen.
Rechtsklick im Projektmappen-Explorer - Hinzufügen, Benutzersteuerelement (UserControl1.vb)
Aus der Toolbox ein DataGridView auf das UserControl ziehen
Das DataGridView-Control bezüglich Datenquelle konfigurieren bzw. erstmal neue Datenquelle definieren (meinDataset)
Oder unter "Daten", "Neue Datenquelle hinzufügen" das Ganze erledigen und dann einfach aus dem Fenster "Datenquellen" die gewünschte Tabelle aus dem Dataset als DataGridView auf das UserControl ziehen
Das DataGridView lässt sich im Weiteren nach Herzenslust einstellen bezüglich Aussehen etc.


Zudem werden werden automatisch Komponenten zur Entwicklungsumgebung hinzugefügt (meinDataset, meinBindingSource, meinTableAdapter, meinTableAdapterManager, meinBindingNavigator)
Dann auf das UserControl einen Button ziehen (bei Klick soll der die Daten vom Server anfordern)
Doppelklick auf den Button, sodass Du in die Code-Ansicht gelangst
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.meinTableAdapter.Fill(meinDataSet.meineTabelle)
End SubDazu gleich noch den Code fürs Klicken in eine Zeile, um diese aktuell an Word zu übergebenPrivate Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
Dim s As String
s = DataGridView1.CurrentRow.Cells(1).Value.ToString + " " + DG.CurrentRow.Cells(2).Value.ToString 'oder was auch immer für Zellinhalte, hier mal 2. und 3. Spalte
'Globals.ThisAddIn.Application.ActiveDocument.Bookmarks("Test").Range.Text = s
Globals.ThisAddIn.Application.ActiveDocument.Range.Text = s
End SubDann im Projektexplorer Rechtsklick auf "ThisAddIn", "Code anzeigen" und als allererste Zeile ganz oben einfügen: Imports Microsoft.Office.Tools
Und zum krönenden Abschluß noch den Code zum Laden des neuen Custom Task Pane in die Word-Umgebung eingeben bzw. das Gerüst vervollverständigen:Imports Microsoft.Office.Tools

Public Class ThisAddIn

Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
Dim ctp As CustomTaskPane
ctp = Globals.ThisAddIn.CustomTaskPanes.Add(New UserControl1, "Test")
ctp.Width = 350
ctp.DockPosition = Microsoft.Office.Core.MsoCTPDockPosition.msoCTPDockPositionLeft
ctp.Visible = True
End Sub

Private Sub ThisAddIn_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shutdown

End Sub

End ClassTesteshalber jetzt F5 drücken und staunen (Add-In wird registriert und Word öffnet sich in neuem Gewand)

Das ist alles aber nun noch sehr rudimentär. Es fehlt z. B. Code, um neue Datensätze in die Datenbank zurückzuschreiben, zu ändern, zu löschen, wie verteilt man so ein Add-In per Setup oder ClickOnce etc. Ich hab' nur mal grundsätzlich zeigen wollen, wie's gehen könnte. Der Phantasie, was man da alles anstellen kann, ist ansonsten keine Grenze gesetzt.

Gruß
Stephan

SWR
23.08.2008, 17:13
Korrigierter Code für's Klicken in eine Zeile des DataGridView:Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
Dim s As String
s = DataGridView1.CurrentRow.Cells(1).Value.ToString + " " + DataGridView1.CurrentRow.Cells(2).Value.ToString 'oder was auch immer für Zellinhalte, hier mal 2. und 3. Spalte
'Globals.ThisAddIn.Application.ActiveDocument.Bookmarks("Test").Range.Text = s
Globals.ThisAddIn.Application.ActiveDocument.Range.Text = s
End Sub . . . sorry.

Gruß
Stephan

bertin11
25.08.2008, 07:05
Hallo Stephan!

Vielen vielen Dank für Deine Mühe!
Das werd ich auf jeden Fall ausprobieren!!

viele Grüße!
Claudia