Avatar billede hede99 Nybegynder
02. december 2002 - 12:21 Der er 7 kommentarer og
1 løsning

Indsættelse af tekset fra Excel til word bogmærker

Hej
Jeg vil gerne lave et regneark med følgende ark:
Ark1: Kundeinfo (Navn, adresse, postnr, by, telefon Att, JA/NEJ)
Ark2: Produkter (Varenr, beskrivelse, min pris, kundenpris, JA/NEJ)
Ark3: Standardtekst (Tekst, JA/NEJ)

Når jeg nu har valgt JA ved de linier, som jeg gerne vil have med over i Word, så skal jeg kunne trykke på en knap, så indsætter den kundeinfo, dato, standard tekst, produkter, priser og til sidste igen lidt standard tekster.

Jeg skal via Bogmærker kunne bestemme hvor de forskellige tekster skal indsættes...

kan man det..
Avatar billede bak Forsker
02. december 2002 - 15:43 #1
Indsæt din bogmærker i word.
Her er et eksempel på overførsel fra excel til word ved bogmærker.
Bemærk at du i ´vba editoren skal have referencer til msword.
Denne overfører a1,b1,c1,d1 og e1 til de respektive bogmærker.

Private Sub MergeButton_Click()
      On Error GoTo MergeButton_Err
        Dim objWord As Word.Application
        Set objWord = CreateObject("Word.Application")
        With objWord
           
            .Visible = True
            .Documents.Open ("c:\minfil.doc")
            ' Move to each bookmark and insert text from the form.
            .ActiveDocument.Bookmarks("Fornavn").Select
            .Selection.Text = Range("a1")
            .ActiveDocument.Bookmarks("efternavn").Select
            .Selection.Text = Range("b1")
            .ActiveDocument.Bookmarks("adresse").Select
            .Selection.Text = Range("c1")
            .ActiveDocument.Bookmarks("by").Select
            .Selection.Text = Range("d1")
            .ActiveDocument.Bookmarks("postnummer").Select
            .Selection.Text = Range("e1")
        End With
        objWord.ActiveDocument.Close
        objWord.Quit
        Set objWord = Nothing
        Exit Sub
MergeButton_Err:
        If Err.Number = 94 Then
            objWord.Selection.Text = ""
            Resume Next
        Else
            MsgBox Err.Number & vbCr & Err.Description
        End If
        Exit Sub
      End Sub
Avatar billede bak Forsker
02. december 2002 - 15:44 #2
Du skal nok lige i første omgang remme  disse linier ud
objWord.ActiveDocument.Close
        objWord.Quit
        Set objWord = Nothing
Avatar billede hede99 Nybegynder
02. december 2002 - 15:46 #3
Hej Bak
Nu har jeg prøvet, men det virker ikke helt, vil du ikke være så venlig at sende mig en excel fil og en word fil, hvor det virker...
Avatar billede bak Forsker
02. december 2002 - 15:55 #4
Joda, email ?
Avatar billede hede99 Nybegynder
02. december 2002 - 15:59 #5
hh@post4.netmaster.dk
Avatar billede bak Forsker
02. december 2002 - 16:12 #6
Sendt
02. december 2002 - 16:51 #7
Private mobjWordApp As Word.Application
Private mobjWordDoc As Word.Document

Public Sub CopyToWord()
    Dim wks As Worksheet
    Dim rCell As Range
    Dim sProductLine As String
    Application.ScreenUpdating = False

    On Error GoTo ShitHappens
   
    'Starter word
    Set mobjWordApp = GetObject(, "Word.Application")
    With mobjWordApp
        .Visible = True
        Set mobjWordDoc = .Documents.Open(Filename:="C:\Temp\Eks 289951.doc")
    End With

    For Each wks In ActiveWorkbook.Worksheets
        For Each rCell In wks.Range("A1").CurrentRegion.Columns(1).Cells
            With rCell
                If UCase(rCell.Value) = "X" Then
                    Select Case wks.Name
                        Case "Names"
                            SetBookmarkAgain "SO_Compagny", .Offset(0, 1).Value
                            SetBookmarkAgain "SO_Address", .Offset(0, 2).Value
                            SetBookmarkAgain "SO_ZipCity", .Offset(0, 3).Value
                        Case "Remarks"
                            SetBookmarkAgain "SO_Remarks", .Offset(0, 1).Value
                        Case "Products"
                            sProductLine = sProductLine & .Offset(0, 1).Value & vbTab & .Offset(0, 2).Value & vbCrLf
                    End Select
                End If
            End With
        Next rCell
    Next wks
   
    If Not (sProductLine = "") Then
        SetBookmarkAgain "SO_ProductLines", sProductLine
    End If
   
    GoTo CleanUp
   
ShitHappens:
  Select Case Err.Number
    Case 429
      'Hvis Excel ikke er startet
      Set mobjWordApp = CreateObject("Word.Application")
      'Fortsætter programmet fra næste linie.
      Resume Next
    Case Else
      'Err.Raise Err.Number
  End Select
 
CleanUp:
'    Set mobjWordApp = Nothing
'    Set mobjWordDoc = Nothing
'    Set wks = Nothing
'    Set rCell = Nothing
    Application.ScreenUpdating = True
End Sub


Private Sub SetBookmarkAgain(ByRef sName As String, ByRef sContents As String)
    Dim rBookmark As Word.Range
    If mobjWordDoc.Bookmarks.Exists(sName) Then
        Set rBookmark = mobjWordDoc.Bookmarks(sName).Range
        rBookmark.Text = sContents
        rBookmark.Bookmarks.Add sName
    End If
End Sub

Også sendt på mail.
02. december 2002 - 16:56 #8
Det skal jo være formateret ordenligt - så lige en ændring:
Case "Products"
    sProductLine = sProductLine & .Offset(0, 1).Value & vbTab & _
    Format(.Offset(0, 2).Value, "#,###.00") & vbCrLf

Eksemplen mailes gerne - fd@win-consult.com
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Tag et kursus i Word og øg effektiviteten

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester