Du kan få konstrueret det sådan - at du direkte fra Word kan se varerne fra Excel og vælge disse - uden at Excel åbnes på nofrmal vis. Alt via VBA..
Hvad så med min total?
Har du et eksempel eller kan du lave det?, så jeg kan komme videre!
På forhånd mange tak.
Hvor meget kender du til VBA?
ikke ret meget, men hvis jeg se et lille eksemple, så tror jeg godt jeg selv kan tilrette det
Ok - prøver at finde et eksempel - vender tilbage..
mange tak, du må gerne sende excel og word til hh@henrikhedegaard.dk
jeg arbejder med samme problemstilling og er meget interesseret i at se resultat/eksempel - hvis det er muligt
Hej Panebb
Jeg har ikke modtaget noget, men når jeg gør, så får du det selvfølgelig at se.
VBA-kode i Userform (Word dokumentet), hvori nr, tekst og pris fra Excel-arket vises og kan vælges. Efter valg overføres det til dokumentet og beregnet total ligeledes.
Const minH = 42
Const maxH = 198
Const produktFilSti = "C:\Documents and Settings\pb.KHNBPB\Skrivebord\HEDE\" 'tilpasses
Const produktFilNavn = "produkter.xlsx" 'tilpasses
Dim produktXls As Object, ræk, total As Single
Private Sub CommandButton1_Click() 'skift mellem maksimer/minimer userform
If Me.Height = minH Then
Me.Height = maxH
Else
Me.Height = minH
End If
End Sub
Private Sub CommandButton2_Click() 'overfør valgte produkter til word
Dim ix As Integer
total = 0
For ix = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(ix) = True Then
overførTilWord ix
End If
Next ix
If Me.ListBox1.ListCount > 0 Then
overførTotalTilWord
End If
Unload UserForm1
End Sub
Private Sub overførTilWord(ix)
Dim nr As String, tekst As String, pris As String
With Me.ListBox1
nr = .List(ix)
tekst = .List(ix, 1)
pris = Format(.List(ix, 2), "##,##0.00")
End With
With Selection
.TypeText Text:=nr & vbTab & tekst & vbTab & pris
.TypeParagraph
End With
total = total + pris
End Sub
Private Sub overførTotalTilWord()
With Selection
.TypeText Text:="Total" & vbTab & vbTab & Format(total, "##,##0.00")
.TypeParagraph
End With
End Sub
Private Sub UserForm_activate()
Me.Height = minH 'minimeret højde
Me.ListBox1.ColumnCount = 3
Me.ListBox1.ColumnWidths = "20,225,25"
åbnProduktFil
visprodukter
lukProduktFil
End Sub
Private Sub åbnProduktFil()
Set produktXls = CreateObject("Excel.Application")
With produktXls
.Visible = False
.Workbooks.Open produktFilSti & produktFilNavn
End With
End Sub
Private Sub lukProduktFil()
produktXls.Application.Quit
Set produktXls = Nothing
End Sub
Private Sub visprodukter()
With produktXls.sheets(1)
For ræk = 2 To 65000
Rem afslutter, når tom celle i A mødes
If .Range("A" & CStr(ræk)) = "" Then
Exit Sub
Else
Me.ListBox1.AddItem .Range("A" & CStr(ræk)) 'nr
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = .Range("B" & CStr(ræk)) 'tekst
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Format(.Range("C" & CStr(ræk)), "#,##0.00") 'pris
End If
Next ræk
End With
End Sub
Måske skulle dette spm. afsluttes?
Hej Hede98
Det du ønsker at gøre er temmelig vanskeligt i Word og Excel, netop på grund af den varierende struktur eller størrelse på et tilbud. Der skal nødvendigvis en del kodning til. Excel er fint til gentagne beregninger med den samme "struktur" på problemet.
Prøv at kigge på
www.ebud.dk. Det er netop et tilbudssystem, lavet af en håndværker og en udvikler (undertegnede) i fællesskab. Det kan nok opfylde dit behov.