ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
861
861
EMPFEHLEN
-
Hallo,
ich habe folgendes Problem.
Hab auch im Forum gesucht aber nichts passendes gefunden.
Ich habe eine Datenbank mit einem Formular in dem ein Unterformular ist.
Das Formular heist frmOfferten und das Unterformular heist frmArtikelOfferte mit den Datenfeldern "IKS", "Bezeichnung" und "Generik".
Die Tabellen-Datenfelder "Bezeichnung" und "Generik" aus dem Unterformular möchte ich in ein schon geöffnetes Word dokument einfügen.
Ich habe leider nicht soviel ahnung von VBA
Ich hatte mir das folgendermassen vorgestellt.
Ich Drücke einen Button und anschließend werden alle Datensätze des gewählten Unterformulares in mein Worddokument kopiert.
Mit dem beigefügten Code hatte ich schon erfolg. Aber leider wird hier ein neues Word-Dokument geöffnet.
Wie gesagt mein Word-Dokument ist schon offen
Des Weiteren werden auch bei diesem Code leere Felder nicht übertragen bzw. es wird an der Stelle Abgebrochen.
Hat einer einen TippPHP-Code:Private Sub DokumentFRZ_Click()
Dim rs As DAO.Recordset
Dim i As Integer
Dim wordobj As word.Application
Dim worddoc As word.Document
Dim objBMRange As word.Range
Dim VORLAGE As String
Dim FS As FileSearch
Dim test As Integer
Dim Lesefiles As String
Dim Laufwerksordner As String
Dim strBMName As String
Dim strBMText As String
Dim strText As String
Vorlagenordner = Application.CurrentProject.Path
Set FS = Application.FileSearch
With FS
.LookIn = Vorlagenordner
Debug.Print Vorlagenordner
.NewSearch
.SearchSubFolders = False
'Filter für *.doc einstellen
.FileName = "*.doc*"
.Execute
For i = 1 To .FoundFiles.Count
Lesefiles = Lesefiles & ";" & Mid(.FoundFiles(i), Len(Vorlagenordner) + 2)
Next i
End With
'Me!Dokument.RowSourceType = valuelist
Me!DokumentFRZ.RowSource = Mid(Lesefiles, 2)
Laufwerksordner = Vorlagenordner & "\" & Me!DokumentFRZ
'Start Microsoft Word.
Set wordobj = CreateObject("Word.Application")
'Vorlage erstellen. Dadurch wird das Original nicht überschrieben
VORLAGE = Laufwerksordner
Set worddoc = wordobj.Documents.Add(Template:=VORLAGE)
'Vorgeschlagener Ordner, wenn 'Speichern unter' in Word gewählt wird
'Ordner muss schon existieren.
'worddoc.Parent.ChangeFileOpenDirectory "e:\"
With wordobj
'Make the application visible.
wordobj.Visible = True
'wordobj.Activate
'Open the document.
'Move to each bookmark and insert text from the form.
'Fehlerroutine für nicht vorhandene bookmarks in Wordvorlage
On Error GoTo ERRORBEENDEN
Set rs = Me![frmArtikelOfferte].Form.RecordsetClone
rs.MoveLast
rs.MoveFirst
If Not (rs.EOF And rs.BOF) Then
For i = 1 To rs.RecordCount
'worddoc.Bookmarks("Pharmacode").Select
'wordobj.Selection.TypeText Text:=CStr(rs!PH_Code)
worddoc.Bookmarks("Bezeichnung").Select
wordobj.Selection.TypeText Text:=CStr(rs!Bezeichnung)
worddoc.Bookmarks("Generika").Select
wordobj.Selection.TypeText Text:=CStr(rs!Generika)
If i = rs.RecordCount Then Exit Sub 'Leerzeile vermeiden
wordobj.Selection.InsertRows 1
wordobj.Selection.Collapse Direction:=wdCollapseStart
'wordobj.Selection.MoveRight Unit:=wdCell
'With worddoc
'Set objBMRange = wordobj.Selection.Range
'.Bookmarks.Add Name:="Pharmacode", Range:=objBMRange
'.Bookmarks.DefaultSorting = wdSortByName
'.Bookmarks.ShowHidden = False
'End With
wordobj.Selection.MoveRight Unit:=wdCell
With worddoc
Set objBMRange = wordobj.Selection.Range
.Bookmarks.Add Name:="Bezeichnung", Range:=objBMRange
.Bookmarks.DefaultSorting = wdSortByName
.Bookmarks.ShowHidden = False
End With
wordobj.Selection.MoveRight Unit:=wdCell
With worddoc
Set objBMRange = wordobj.Selection.Range
.Bookmarks.Add Name:="Generika", Range:=objBMRange
.Bookmarks.DefaultSorting = wdSortByName
.Bookmarks.ShowHidden = False
End With
rs.MoveNext
Next i
End If
rs.Close
Set rs = Nothing
End With
Set worddoc = Nothing
Set wordobj = Nothing
Exit Sub
ERRORBEENDEN:
Exit Sub
End Sub
Private Sub DokumentFRZ_Enter()
Vorlagenordner = Application.CurrentProject.Path
Dim i As Integer
Dim Lesefiles As String
Dim test As Integer
Dim FS As FileSearch
Set FS = Application.FileSearch
With FS
.LookIn = Vorlagenordner
.NewSearch
.SearchSubFolders = False
'Filter für *.doc einstellen
.FileName = "*.doc*"
.Execute
For i = 1 To .FoundFiles.Count
Lesefiles = Lesefiles & ";" & Mid(.FoundFiles(i), Len(Vorlagenordner) + 2)
'Debug.Print Lesefiles
Next i
End With
'Me!comboVorlagenFRZ.RowSourceType = valuelist
Me!DokumentFRZ.RowSource = Mid(Lesefiles, 2)
End Sub
Gruß Edgar
-
Nur mal schnell das ganze in VB-Tags anstelle von PHP-TZags, damit man es lesen kann
Code vb: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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
Private Sub DokumentFRZ_Click() Dim rs As DAO.Recordset Dim i As Integer Dim wordobj As word.Application Dim worddoc As word.Document Dim objBMRange As word.Range Dim VORLAGE As String Dim FS As FileSearch Dim test As Integer Dim Lesefiles As String Dim Laufwerksordner As String Dim strBMName As String Dim strBMText As String Dim strText As String Vorlagenordner = Application.CurrentProject.Path Set FS = Application.FileSearch With FS .LookIn = Vorlagenordner Debug.Print Vorlagenordner .NewSearch .SearchSubFolders = False 'Filter für *.doc einstellen .FileName = "*.doc*" .Execute For i = 1 To .FoundFiles.Count Lesefiles = Lesefiles & ";" & Mid(.FoundFiles(i), Len(Vorlagenordner) + 2) Next i End With 'Me!Dokument.RowSourceType = valuelist Me!DokumentFRZ.RowSource = Mid(Lesefiles, 2) Laufwerksordner = Vorlagenordner & "\" & Me!DokumentFRZ 'Start Microsoft Word. Set wordobj = CreateObject("Word.Application") 'Vorlage erstellen. Dadurch wird das Original nicht überschrieben VORLAGE = Laufwerksordner Set worddoc = wordobj.Documents.Add(Template:=VORLAGE) 'Vorgeschlagener Ordner, wenn 'Speichern unter' in Word gewählt wird 'Ordner muss schon existieren. 'worddoc.Parent.ChangeFileOpenDirectory "e:" With wordobj 'Make the application visible. wordobj.Visible = True 'wordobj.Activate 'Open the document. 'Move to each bookmark and insert text from the form. 'Fehlerroutine für nicht vorhandene bookmarks in Wordvorlage On Error GoTo ERRORBEENDEN Set rs = Me![frmArtikelOfferte].Form.RecordsetClone rs.MoveLast rs.MoveFirst If Not (rs.EOF And rs.BOF) Then For i = 1 To rs.RecordCount 'worddoc.Bookmarks("Pharmacode").Select 'wordobj.Selection.TypeText Text:=CStr(rs!PH_Code) worddoc.Bookmarks("Bezeichnung").Select wordobj.Selection.TypeText Text:=CStr(rs!Bezeichnung) worddoc.Bookmarks("Generika").Select wordobj.Selection.TypeText Text:=CStr(rs!Generika) If i = rs.RecordCount Then Exit Sub 'Leerzeile vermeiden wordobj.Selection.InsertRows 1 wordobj.Selection.Collapse Direction:=wdCollapseStart 'wordobj.Selection.MoveRight Unit:=wdCell 'With worddoc 'Set objBMRange = wordobj.Selection.Range '.Bookmarks.Add Name:="Pharmacode", Range:=objBMRange '.Bookmarks.DefaultSorting = wdSortByName '.Bookmarks.ShowHidden = False 'End With wordobj.Selection.MoveRight Unit:=wdCell With worddoc Set objBMRange = wordobj.Selection.Range .Bookmarks.Add Name:="Bezeichnung", Range:=objBMRange .Bookmarks.DefaultSorting = wdSortByName .Bookmarks.ShowHidden = False End With wordobj.Selection.MoveRight Unit:=wdCell With worddoc Set objBMRange = wordobj.Selection.Range .Bookmarks.Add Name:="Generika", Range:=objBMRange .Bookmarks.DefaultSorting = wdSortByName .Bookmarks.ShowHidden = False End With rs.MoveNext Next i End If rs.Close Set rs = Nothing End With Set worddoc = Nothing Set wordobj = Nothing Exit Sub ERRORBEENDEN: Exit Sub End Sub Private Sub DokumentFRZ_Enter() Vorlagenordner = Application.CurrentProject.Path Dim i As Integer Dim Lesefiles As String Dim test As Integer Dim FS As FileSearch Set FS = Application.FileSearch With FS .LookIn = Vorlagenordner .NewSearch .SearchSubFolders = False 'Filter für *.doc einstellen .FileName = "*.doc*" .Execute For i = 1 To .FoundFiles.Count Lesefiles = Lesefiles & ";" & Mid(.FoundFiles(i), Len(Vorlagenordner) + 2) 'Debug.Print Lesefiles Next i End With 'Me!comboVorlagenFRZ.RowSourceType = valuelist Me!DokumentFRZ.RowSource = Mid(Lesefiles, 2) End Sub
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Hallo,
wie gesagt habe ich nicht viel Ahnung.
Kann ich denn mit Hilfe rechnen?
Würde mich sehr weiterbringen.
Gruß Edgar
-
Wird das Word-Dokument von Hand geöffnet oder wird es in einem vorhergehenden Programmabschnitt geöffnet?
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Das Word-Dokument wir nicht von Hand geöffnet.
Es wird durch ein externes Programm (Firmeneigene Software) gestartet.
D.h. ich starte die Firmeneigene Software, wähle den Kunden aus.
Jetzt starte Die Firmensoftwar das Word-Dokument.
Für dieses Word-Dokument wird eine Wordvorlage verwendet.
-
Also müsstest du euf eine bereits laufende und dir unbekannte Word-Instanz zugreiffen..... Ist mir grad nicht bekannt dass das ginge.
Du kannst die ProcessIDs aller geöffnet Word-Instancen ermitteln, ggf. sogar welche der Words von der anderen Applikation geöffnet ist, aber dann ist da bals mal fertig lustig.
Basierend auf http://www.activevb.de/tipps/vb6tipps/tipp0273.html
Code vb: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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" _ (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Declare Function ProcessFirst Lib "kernel32" Alias _ "Process32First" (ByVal hSnapShot As Long, uProcess _ As PROCESSENTRY32) As Long Private Declare Function ProcessNext Lib "kernel32" Alias _ "Process32Next" (ByVal hSnapShot As Long, uProcess _ As PROCESSENTRY32) As Long Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass _ As Long) Const TH32CS_SNAPPROCESS As Long = 2& Private Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szExeFile As String * MAX_PATH End Type Private Sub GetExeNames() Dim hSnapShot As Long, Result As Long Dim aa As String, bb As String Dim Process As PROCESSENTRY32 hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0&) If hSnapShot = 0 Then Exit Sub Process.dwSize = Len(Process) Result = ProcessFirst(hSnapShot, Process) Do While Result <> 0 If Process.szExeFile Like "WINWORD.EXE*" Then //Process-ID ins Direktfenster ausgeben Debug.Print Process.th32ProcessID End If Result = ProcessNext(hSnapShot, Process) Loop Call CloseHandle(hSnapShot) End Sub
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
Ähnliche Themen
-
Word Dokument drucken und Word schließen
Von InFlame im Forum Visual Basic 6.0Antworten: 4Letzter Beitrag: 27.07.11, 12:06 -
Link- / Formulardaten an ein anderes geöffnetes Fenster übergeben
Von NTDY im Forum Javascript & AjaxAntworten: 9Letzter Beitrag: 18.02.05, 01:14 -
schreibgeschützt geöffnetes Dokument verusacht beim Schließen einen Laufzeitfehler
Von Manou im Forum Visual Basic 6.0Antworten: 0Letzter Beitrag: 12.12.04, 19:19 -
Word Dokument via PHP erstellen
Von hans_schmid im Forum PHPAntworten: 15Letzter Beitrag: 28.09.04, 09:32 -
Word-Dokument stürzen?
Von Oli-bt im Forum Office-AnwendungenAntworten: 1Letzter Beitrag: 16.06.04, 15:45





Zitieren

Login





