/ Forside/ Teknologi / Udvikling / VB/Basic / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
ActiveWorkbook - i shell
Fra : isidor
Vist : 531 gange
20 point
Dato : 06-01-05 11:47

Som nybegynder i VB er jeg stødt ind et et (lille) problem:
Jeg har oprettet en del små programmer, der skal bruges til forskellige registreringer i Excel-filer og samtidigt oprette Word-dokumenter udfra mastere (Sidehoved, udfyldning af faste felter mm).
Det virker fint med kald af ActiveWorkbook.--- (osv)
Men hvis Word er aktiv i forvejen (kører) - oplever jeg jeg at mit program crasher - sikkert fordi jeg ikke får startet Word-processen som sig selv men at den vil arbejde i den proces jeg har startet.

Har nogen en god ide / løsning til dette ?
Hvordan får jeg startet Word (uden vindue) og får udfyldt mine felter mm - i sin egen proces ?

 
 
Kommentar
Fra : CADmageren


Dato : 06-01-05 12:09

Bruger du createobject?

Må vi se opstartskoden?


Kommentar
Fra : isidor


Dato : 06-01-05 12:14

Hej CADmager,
Her er det meste af hele det der foregår - det er ikke noget jeg helt selv har lavet - men fået noget forærende og brygget videre på funktionerne. Det virker ellers fint og gør hvad det skal.

Starten på Privat Sub indeholder ikke andet end et chek på om de felter i min Form er udfyldt / ændret.
Bliver du klogere af dette ?


'Skriver i Sagsnotatregister
Workbooks.Open CurDir & "\Dok\05 Korrespondance\05-03 Arkitekt\Sagsnotater\Sagsnotatregister.xls", , False, , , "vl"
With Worksheets("Sagsnot-reg")
For I = 1 To 1000
If (.Cells(I + 5, 1) = "") Then
notnr.Text = Format((.Cells(I + 4, 1) + 1), "0##")
.Cells(I + 5, 1) = notnr.Text
.Cells(I + 5, 2) = Dato.Text

If (Referat.Value) Then
.Cells(I + 5, 3) = ("Referat : " & Emne.Text)
Else
.Cells(I + 5, 3) = ("Notat : " & Emne.Text)
End If

'.Cells(I + 5, 3) = Emne.Text
.Cells(I + 5, 4) = Excel.Application.UserName
'INI = Excel.Application.UserName

Exit For
End If
Next I
End With
ActiveWorkbook.Close Savechanges:=True
Excel.Application.Quit

'Skriver i Dokumentregister
Dato1.Text = Format(Date, "dd.mm.yy")
Workbooks.Open CurDir & "\Dok\01 Sagsbasis\01-01 Sagsregistrering\Dokumentregister.xls", , , , , "vl"
With Worksheets("DOKU-reg")
For I = 1 To 500
If (.Cells(I + 6, 1) = BLANK) Then
løbenr.Text = Format((.Cells(I + 5, 1) + 1), "0##")
.Cells(I + 6, 1) = løbenr.Text
.Cells(I + 6, 2) = Dato1.Text
'.Cells(I + 6, 4) = "x"
'.Cells(I + 6, 5) = Til.Text
.Cells(I + 6, 6) = "05-03"

.Cells(I + 6, 7) = "SNotat"
If (Referat.Value) Then
.Cells(I + 6, 8) = (notnr.Text & " - Referat : " & Emne.Text)
Else
.Cells(I + 6, 8) = (notnr.Text & " - Notat : " & Emne.Text)
End If
.Cells(I + 6, 9) = Excel.Application.UserName
Exit For
End If
Next I
End With
ActiveWorkbook.Close Savechanges:=True
Excel.Application.Quit


Dim wordapp As Application
Dim doc As Document
'Dim Sagsnavn As String

'Dato.Text = Format(Date, "dd.mm.yyyy")
Set wordapp = CreateObject("Word.Application")

If (Referat.Value) Then
If (snotnr.Text = "000") Then
FileCopy "Y:\VL Arkiv og dok\SAGSNOTAT Master ref.doc", CurDir & "\Dok\05 Korrespondance\05-03 Arkitekt\Sagsnotater\Sagsnotat " & notnr.Text & ".doc"
'FileCopy ".\SAGSNOTAT Master ref.doc", CurDir & "\Dok\05 Korrespondance\05-03 Arkitekt\Sagsnotater\Sagsnotat " & notnr.Text & ".doc"
Else
FileCopy CurDir & "\Dok\05 Korrespondance\05-03 Arkitekt\Sagsnotater\Sagsnotat " & snotnr.Text & ".doc", CurDir & "\Dok\05 Korrespondance\05-03 Arkitekt\Sagsnotater\Sagsnotat " & notnr.Text & ".doc"
End If


Else
FileCopy "Y:\VL Arkiv og dok\SAGSNOTAT Master not.doc", CurDir & "\Dok\05 Korrespondance\05-03 Arkitekt\Sagsnotater\Sagsnotat " & notnr.Text & ".doc"
'FileCopy ".\SAGSNOTAT Master not.doc", CurDir & "\Dok\05 Korrespondance\05-03 Arkitekt\Sagsnotater\Sagsnotat " & notnr.Text & ".doc"
End If

Set doc = wordapp.Documents.Open(CurDir & "\Dok\05 Korrespondance\05-03 Arkitekt\Sagsnotater\Sagsnotat " & notnr.Text & ".doc")
Word.Application.Documents.Open (CurDir & "\Dok\05 Korrespondance\05-03 Arkitekt\Sagsnotater\Sagsnotat " & notnr.Text & ".doc")


Word.Application.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.TypeText (Sagsnavn.Text)
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.TypeText (Sag.Text)
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.TypeText ("Sagsnotat " & notnr.Text)
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.TypeText (Emne.Text)
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.TypeText (Dato.Text)
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.TypeText (Application.UserInitials)
Word.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.TypeText (Emne.Text)

Word.Application.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Word.Selection.MoveRight Unit:=wdCell
Word.Selection.MoveLeft Unit:=wdCell
Word.Selection.TypeText (Sag.Text & "-" & løbenr.Text)

doc.SaveAs CurDir & "\Dok\05 Korrespondance\05-03 Arkitekt\Sagsnotater\Sagsnotat " & notnr.Text & ".doc"
Word.Application.Quit
Opret.Enabled = False
Aabn.Enabled = True

End Sub

Kommentar
Fra : CADmageren


Dato : 06-01-05 12:32

1. Er det hver eneste gang at programmet crasher?
2. Prøv at debug dig frem til den linie der giver problemet. (F8)

3. Opstår problemet kun hvis Word køre i forvejen?
Hvis ja.
Kommer forbi CreateObject uden problemer?

/ Michael



Kommentar
Fra : isidor


Dato : 06-01-05 12:48

Hej Michael,
Hvis Word ikke kører i forvejen - så er der ingen problemer. Så sker alt det der skal ske.

Jeg har "hugget" det Word skal gøre - ved at lave makroen i Word. Det er måske derfor at den crasher når Word kører i forvejen ?

Selve funktionen er at der udfra udfyldning af felter i min Form - indføres div. registreringer i en bestem Excel-fil - og derefter oprettes en Word-fil som kopi af en master - bestemt udfra et valg i Formen. Der indsættes data fra Formen eller forudbestemte data i både Sidehoved og i tabeller i Word-dokumentet. Tilsidst gemmes med separat nummer iht. registreringen i Excel-filen.
(Ultra kort beskrivelse)
Og alt virker og gør som det skal - når bare Word ikke kører i forvejen.

/ Henrik



Accepteret svar
Fra : CADmageren

Modtaget 20 point
Dato : 06-01-05 13:13

1. Er det hver eneste gang at programmet crasher?
2. Prøv at debug dig frem til den linie der giver problemet. (F8)
3. Bliver CreateObject eksekveret?


Kommentar
Fra : isidor


Dato : 06-01-05 13:20

1. Hvis Word kører i forvejen - så er dte min oplevelse at det chasher hver gang.
2. Jeg kan ikke debugge - for der er ikke noget galt i selve programlinien - men selve Word-dokumentet bliver "låst" og Word-programmet bliver afsluttet (når Word kører) - så jeg skal ned og "dræbe" den Word-proces, der bliver ved at køre.
3. ?? Jo, det ser vel sådan ud - når programmet virker (når Word ikke kører)

Men jeg har haft svært ved at finde ud af hvad det præcist er der går galt - når Word kører i forvejen.

I øvrigt tak for du du gider hænge på.

/ Henrik

Godkendelse af svar
Fra : isidor


Dato : 10-01-05 16:37

Tak for svaret CADmageren.
Problemet blev løst ved at kalde Word.Application på den rigtig måde.
Dine svar gav mig mulighed for at komme videre - og fandt en ekstern konsulent, der lige kunne dreje nøglen rigtig rundt.
Vi snakkes ved.
                        

Kommentar
Fra : CADmageren


Dato : 11-01-05 08:25

Jamen selv tak

/ Michael Christoffersen


Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste