/ 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
visual baisc og udskrivning
Fra : olefahnoe
Vist : 448 gange
500 point
Dato : 10-05-05 09:44

hej

jeg skal lave en udskrivnings box hvor jeg skal kunne vælge nogle word.doc og derefter udskrive dem

altså

checkboxe og en print knap

 
 
Kommentar
Fra : Harlekin


Dato : 10-05-05 10:10
Kommentar
Fra : olefahnoe


Dato : 10-05-05 10:19

hmm

fik jeg ikke sagt at jeg ikke er en haj

og bruger vB editor i excel

Kommentar
Fra : arne.jakobsen


Dato : 10-05-05 12:54

Du kan låne ca 100 instruktionsbøger i VB på biblioteket. Der findes også nogle for ikke-nørder.

Kommentar
Fra : olefahnoe


Dato : 10-05-05 13:04

åk tak

det må jeg prøve


Kommentar
Fra : olefahnoe


Dato : 10-05-05 13:05

jeg havde engang et link til en side hvor man kunne finde det hele og bare kopiere det ind hos sig selv

er der nogen der kender en sådan side

Kommentar
Fra : arne.jakobsen


Dato : 10-05-05 15:51

OK Ole. Til 500 point har du fortjent et bedre svar end mit. Jeg følger lige med fra sidelinjen.

Kommentar
Fra : berpox


Dato : 10-05-05 16:46

Hej Ole.

Hvis jeg forstår opgaven rigtigt så er den som følger:

1) Form med checkbokse og labels samt en OK command knap oprettes i Excel.
2) De checkbokse der er hakket af betyder at det Word-dokument der er nævnt i en label skal udprintes ved tryk på OK knappen.

- altså du vil indefra Excel kunne udskrive nogle Word-dokumenter.

Jeg kan lave noget kode til dig senere der kan ovennævnte (det bli'r nok først sent i aften eller imorgen), med mindre andre laver koden før mig

Meld lige tilbage om det er rigtigt forstået.

mvh berpox


Kommentar
Fra : olefahnoe


Dato : 10-05-05 21:17

det er helt rigitgt forstået

og jeg vil blive glad for at se hvordan man gør

så hvis det virker (hvilket jeg ikke tviler på) så er der flere point på vej til dig

Kommentar
Fra : berpox


Dato : 12-05-05 01:22

Hej Ole.

1) I dit VBA for dit excel-ark indsætter du en userform der får navnet Userform1.
2) Indsæt 3 checkbokse på Userform1 og navngiv dem chkbox1 chkbox2 chkbox3 (altså name, IKKE caption)
3) Indsæt en knap på Userform1 og navngiv den cmdPrint
4) Indsæt al følgende kode i din userform..

Kode
' Kodet af berpox 2005-05-11
'
' Husk at vælge "Tools - References og hakke af ud for
' "Microsoft Word 9.0 Object library"
' samt
' "Microsoft Scripting Runtime"

Option Explicit
Option Base 1

Dim WordDoc(100) As String
'Dim fso, myfile As Scripting.FileSystemObject
Dim i As Integer
Dim ctrl As Control

Dim MyAppID As Variant

Private Sub Chkbox1_Click()
WhichDocumentsAreChecked
End Sub
Private Sub Chkbox2_Click()
WhichDocumentsAreChecked
End Sub
Private Sub Chkbox3_Click()
WhichDocumentsAreChecked
End Sub

Private Sub cmdPrint_Click()


'On Error GoTo Errorhandler
MyAppID = Shell("c:\Programmer\Microsoft Office\Office\Winword.exe", 1) 'åbner word i normalt vindue



'lukker det tomme "standard" dokument
On Error Resume Next
Word.ActiveDocument.Close (wdPromptToSaveChanges)

i = 1
For Each ctrl In UserForm1.Controls
If TypeName(ctrl) = "CheckBox" Then 'hvis der er tale om en checkbox, så...
If ctrl Then 'Hvis checkbox er TRUE åbnes dokumentet

Word.Documents.Open ctrl.Caption 'åbner filen der modsvarer caption på valgt checkbox
Word.ActiveDocument.Activate
ActiveDocument.PrintOut Range:=wdPrintAllPages, Copies:=1 'alle sider
On Error GoTo 0
'Debug.Print Now
Application.Wait Now + TimeValue("00:00:03") 'venter 3 sek. mens printet sendes til spoolkø
'Debug.Print Now
On Error GoTo Errorhandler
Word.ActiveDocument.Close wdDoNotSaveChanges

i = i + 1
End If
End If
Next
Unload UserForm1
Word.Application.Quit wdDoNotSaveChanges
Set UserForm1 = Nothing
Set MyAppID = Nothing


Exit Sub

Errorhandler:
MsgBox "Der opstod en eller anden fejl, som jeg ikke kender. Prøv at lukke word, og så forsøg igen!", vbInformation

Unload UserForm1
End
End Sub


Function WhichDocumentsAreChecked() 'farver baggrundsfarven grøn ved valgt checkbox

i = 1
For Each ctrl In UserForm1.Controls
If TypeName(ctrl) = "CheckBox" Then
If ctrl Then
ctrl.BackColor = vbGreen
Else
ctrl.BackColor = &H8000000F
i = i + 1
End If
End If
Next ctrl
End Function

Sub ResizeAllCheckBoxesInUserForm() 'tilpasser checkboxe

i = 1
For Each ctrl In UserForm1.Controls
If TypeName(ctrl) = "CheckBox" Then
ctrl.Width = 160
ctrl.Left = 20
ctrl.Caption = UCase(WordDoc(i))
i = i + 1
End If
Next ctrl
End Sub


Sub UserForm_initialize()

'Formatterer Userform1
With UserForm1
.Width = 200
.Height = 160
End With

'Formatterer og placerer Print-knappen
With cmdPrint 'Navnet på Commandbutton1 er omdøbt til cmdPrint
.Caption = "Print de udvalgte dokumenter"
.Width = 160
.Height = 20
.Left = 20
.Top = 100
End With

'her indtastes stien til de dokumenter der skal kunne åbnes og udskrives
'op til 100 filer kan defineres da WordDoc(x) er deklareret som et array på 100
WordDoc(1) = "C:\dokumenter\testdoc1.doc"
WordDoc(2) = "C:\dokumenter\testdoc2.doc"
WordDoc(3) = "C:\dokumenter\testdoc3.doc"

'kalder sub til lige at tilpasse checkboksteksterne til dokumentteksterne...
ResizeAllCheckBoxesInUserForm

End Sub


5) På "Sheet1" i dit regneark indsætter du en trykknap, således at VBA koden for denne bliver
Kode
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub


6) Opret 3 testdokumenter i word, læg dem i folderen c:\dokumenter og navngiv dem testdoc1.doc, testdoc2.doc, testdoc3.doc

7) Afvikl koden ved tryk på knappen....

8) Der opstår desværre ofte en eller anden meget mærkelig runtime error 462 når koden afvikles - sådan ca. hver anden gang....jeg vil lige forske lidt videre i hvad pokker det er der sker.... men det korte af det lange er, at du her har en kode der kan en hel masse. Du kan så plukke det ud du har brug for. Jeg har lagt lidt forklarende tekst ind i koden, men det ser du

God fornøjelse

mvh berpox



Kommentar
Fra : olefahnoe


Dato : 12-05-05 08:37

glæder mig til at afprøve det lige om lidt tak

Kommentar
Fra : berpox


Dato : 12-05-05 08:46

Hej Ole.

Jeg kan maile excel dokumentet til dig, hvis du har en mailadresse jeg må benytte..... skriv den evt. kortvarigt ind i din profil, så ligger den ikke til offentligt skue i al evighed på Kandu

mvh berpox

Kommentar
Fra : berpox


Dato : 12-05-05 09:47

Glemte at skrive, at du selvfølgelig lige må tilpasse linien der hvor jeg aktiverer word så det passer til din installation

MyAppID = Shell("c:\Programmer\Microsoft Office\Office\Winword.exe", 1)

mvh berpox

Kommentar
Fra : olefahnoe


Dato : 12-05-05 16:05

det kunne være godt med en mail hvis du vil

olefahnoe @ hotmail . com

Kommentar
Fra : berpox


Dato : 12-05-05 16:16

Er sendt til dig nu Ole

mvh berpox

Kommentar
Fra : olefahnoe


Dato : 12-05-05 19:21

tak afprøver den i morgen tidlig

Kommentar
Fra : berpox


Dato : 18-05-05 21:00

Hej Ole - kan du få det til at lykkes ?

mvh berpox

Kommentar
Fra : olefahnoe


Dato : 18-05-05 21:41

hej

jeg afprøvede det endelig i dag
men desværre
der kommer kun din fejlmeddelse op

når jeg trukker på print kanp

starter word og så kommer der fejl

hmm

men tak fort hjælpen

Kommentar
Fra : berpox


Dato : 18-05-05 22:36

Okay....kigger lige på det igen.

Accepteret svar
Fra : berpox

Modtaget 500 point
Dato : 18-05-05 23:44

Hej Ole - så er den der sq

Kode
' Kodet af berpox 2005-05-11
'
' Husk at vælge "Tools - References og hakke af ud for
' "Microsoft Word 9.0 Object library"
' samt
' "Microsoft Scripting Runtime"

Option Explicit
Option Base 1

Public i As Integer
Public ctrl As Control

Dim answer As Boolean
Dim WordDoc(100) As String
Dim fso As Scripting.FileSystemObject
Dim MyAppID As Variant

Private Sub Chkbox1_Click()
WhichDocumentsAreChecked
End Sub
Private Sub Chkbox2_Click()
WhichDocumentsAreChecked
End Sub
Private Sub Chkbox3_Click()
WhichDocumentsAreChecked
End Sub

Private Sub cmdPrint_Click()

On Error Resume Next

Dim Wapp As Word.Application
Dim Wdocs As Word.Documents
Dim Wdoc As Word.Document

Set fso = New FileSystemObject

For Each ctrl In UserForm1.Controls



If TypeName(ctrl) = "CheckBox" Then 'hvis der er tale om en checkbox, så...
If ctrl Then 'Hvis checkbox er TRUE åbnes dokumentet

If MyAppID = "" Then
MyAppID = Shell("c:\Programmer\Microsoft Office\Office\Winword.exe " & ctrl.Caption, 1)
Else
Word.Application.Activate
Word.Documents.Open (ctrl.Caption) 'åbner filen der modsvarer caption på valgt checkbox
End If

Set Wapp = Word.Application
Set Wdoc = Wapp.ActiveDocument
Wdoc.PrintOut Range:=wdPrintAllPages, Copies:=1 'alle sider

Application.Wait Now + TimeValue("00:00:03") 'venter 3 sek. mens printet sendes til spoolkø

Word.Documents.Close wdDoNotSaveChanges

End If
End If
Next

Unload UserForm1
Word.Application.Quit wdDoNotSaveChanges

Set UserForm1 = Nothing
Set MyAppID = Nothing

Unload UserForm1
End
End Sub


Function WhichDocumentsAreChecked() 'farver baggrundsfarven grøn ved valgt checkbox

i = 1
For Each ctrl In UserForm1.Controls
If TypeName(ctrl) = "CheckBox" Then
If ctrl Then
ctrl.BackColor = vbGreen
Else
ctrl.BackColor = &H8000000F
i = i + 1
End If
End If
Next ctrl
End Function

Sub ResizeAllCheckBoxesInUserForm() 'tilpasser checkboxe

i = 1
For Each ctrl In UserForm1.Controls
If TypeName(ctrl) = "CheckBox" Then
ctrl.Width = 160
ctrl.Left = 20
ctrl.Caption = UCase(WordDoc(i))
i = i + 1
End If
Next ctrl
End Sub


Sub UserForm_initialize()

'Formatterer Userform1
With UserForm1
.Width = 200
.Height = 160
End With

'Formatterer og placerer Print-knappen
With cmdPrint 'Navnet på Commandbutton1 er omdøbt til cmdPrint
.Caption = "Print de udvalgte dokumenter"
.Width = 160
.Height = 20
.Left = 20
.Top = 100
End With

'her indtastes stien til de dokumenter der skal kunne åbnes og udskrives
'op til 100 filer kan defineres da WordDoc(x) er deklareret som et array på 100
WordDoc(1) = "C:\dokumenter\testdoc1.doc"
WordDoc(2) = "C:\dokumenter\testdoc2.doc"
WordDoc(3) = "C:\dokumenter\testdoc3.doc"

'kalder sub til lige at tilpasse checkboksteksterne til dokumentteksterne...
ResizeAllCheckBoxesInUserForm

End Sub


Jeg mailer den også lige til dig.

mvh berpox

Kommentar
Fra : berpox


Dato : 19-05-05 19:45

Hej Ole - har du modtaget min mail ?

mvh berpox

Kommentar
Fra : olefahnoe


Dato : 19-05-05 19:55

ja tak

det virker fint mange tak

ole

der er en tråd mere til dig

Godkendelse af svar
Fra : olefahnoe


Dato : 19-05-05 19:55

Tak for svaret berpox.
                        

Kommentar
Fra : berpox


Dato : 19-05-05 20:00

Hej Ole - velbekomme, og mange tak - og så håber jeg blot du bliver rigtig glad for løsningen, og at den har bragt dig videre med VBA

mvh berpox

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 : 173365
Tips : 31646
Nyheder : 719565
Indlæg : 6381706
Brugere : 218245

Månedens bedste
Årets bedste
Sidste års bedste