Avatar billede dsj1972 Juniormester
11. februar 2010 - 16:13 Der er 26 kommentarer og
1 løsning

overfører data fra Userform (word) til både dokument og excel

Hejsa,

Jeg håber der er nogen som kan hjælpe lidt, for det er godt nok ikk mange spm herinde omkring dataflyt fra word til excel men der er tilgengæld masser den anden vej.

Jeg har en Userform i Word2007 som udfylder en masse data i flere dokumenter, men nu kunne jeg godt tænke mig at nogle af disse data som indtastes i Userform også kom over i et excel ark, eller access.

Meningen med det er at det skal fungere som slags arkiv/registrering af disse inputs nogle af dem.

Jeg kunne godt tænke mig at de data fra Userform som skal bruges både i word og excel overføres til begge steder fra USerform, dvs helst ikk nogen kæder eller lign.

Men gerne noget kode som flytter værdien over i begge steder fra
Userform.

Og så har jeg et andet lille problem som driller mig lidt.
Jeg har et felt i min Userform hvor der indtastes en dato f.eks
11022010, jeg ville så gerne have det konverteret inden den smider det over i dokumenter til dato format dd.mmm.YYYY Lang dato format.
Jeg har forsøgt at lave noget dato kode under Change_dato()
Men det gjorde bare at den aktuelle dato kom på istedet.


Håber jeg har forklaret mig godt nok, ellers bare spørg.
11. februar 2010 - 16:22 #1
Du kan læse lidt om at integrere fra Word til Excel her
http://kursusmaterialer.dk/Word_VBA/Diverse/Office_integration.aspx

Viser du dit forsøg på dato konvertering? - så kan vi kommentere på det
Avatar billede dsj1972 Juniormester
11. februar 2010 - 16:45 #2
JA skal nok vise mit forsøg på dato ændring, men det må vente til jeg kommer hjem så for skal lige finde det på en gammel udgave da jeg har slettet det i nuværende fordi det ikke virkede.
Avatar billede dsj1972 Juniormester
12. februar 2010 - 11:08 #3
Hej igen,

Ja igår aftes blev altså til nu da jeg arbejde sent igår.

Jeg har ledt og ledt, men har desværre i min frustration fået slettet det.

Men husker det som jeg forsøgte med noget a´la´:

Privat Sub txtDato_Change()

Dim strDato As String
  strDato =  Format(Day(Date), "dd") & Format(Month(Date), "mmm") & Format(Year(Date), "YYYY")

txtDato.Value = strDato

Eller noget i den retning , men som sagt når dette bliver indsat så bliver der sat aktuel dato på altså system dato.
Det jeg bare gerne ville var at man kunne indtaste f.eks
12022010 i feltet i min Userform og så bliver output lavet om til 12 feb 2010 på dokumentets DocVariable.

mvh dsj
Avatar billede dsj1972 Juniormester
12. februar 2010 - 11:19 #4
Mht mit spm omkring data over til Excel.

som jeg kan se at henviste link udemærket omhandler kopiering af data fra word til excel. Men de viste eks. forudsætter markering af tekst i word, dette ville jeg gerne undgå.

Men mit problem er at jeg har lavet Userform som bliver udfyldt og så derefter sætter værdier ind i flere forskellige dokumenter alt efter hvilken valg som er blevet fortaget, dvs der er flere Array´s

Jeg har lavet koden til dette efter Lene Fredborgs model som lavet i dette spm http://www.eksperten.dk/spm/900892 indlæg nr 13.

Så derfor er jeg ude efter noget hvor indtastet værdier i USerform (word) bliver smidt direkte over i excel.
Evt. kunne det være en idé at excel filen blev placeret i array´s
hvis det som sådan kan lade sig gøre.

Access kan også bruges hvis dette giver bedre muligheder for overførelse af data.

mvh dsj
Avatar billede dsj1972 Juniormester
12. februar 2010 - 11:50 #5
Forestiller mig at jeg har et excel projekt data.xls
som har flg.

Data1(A1), Data2(B1), data3(C1), Data4(D1) og Data5(E1)

disse representere 5 koloner hvor i mine data skal fyldes ud fra Userform i word.

så tænkte at man under sin cmdOK button eller lign.

har noget a´la

txtboks1 = kolone A ' dvs hver gang der udfyldes på ny indsættes i ny række under kolone A startende fra A2

txtboks2 = Kolone B ' Startende fra B2

txtboks3 = kolone C ' Startende fra C2

txtboks4 = Kolone D ' Startende fra D2

txtboks5 = Kolone E ' Startende fra E2

Og det skulle måske nok have været skrevet omvendt da jeg jo vil have værdi fra txt felterne over i excel

mvh dsj
12. februar 2010 - 11:50 #6
Ja, du skulle selv arbejde lidt videre med koden - jeg kender jo ikke din userform eller det regneark der skal overføres til.

    Dim ExcelApp As Excel.Application
    Set ExcelApp = New Excel.Application
    With ExcelApp
        .Application.Visible = True
        .Workbooks.Open FileName:="c:\test.xls"
   
        'Her skal du skrive den kode der indsætter teksten fra din userform f.eks.

        Range("A1").Value = txtNavn.Text

        'Hvis du har et felt, der hedder txtNavn på din userform

        .ActiveWorkbook.Save
        .Quit
    End With
    Set ExcelApp = Nothing
12. februar 2010 - 11:56 #7
Og til datoen kan du gøre noget i retning af

Sub datoformat()
    Dim strDato, strFormateretDato As String
    Dim dateDato As Date
   
    strDato = "11022010"
    dateDato = DateSerial(Right(strDato, 4), Mid(strDato, 3, 2), Left(strDato, 2))
    strFormateretDato = Format(dateDato, "dd MMM yyyy")
   
    MsgBox strFormateretDato
End Sub
Avatar billede dsj1972 Juniormester
12. februar 2010 - 11:58 #8
Hej Thor,

Ja ok det var jeg godt klar over, men det som forvirre mig lidt er at i den kode du lige har skrevet, står Range("A1").Value

første gang går det vel fint men hvad med næste gang sletter den så det første???

Jeg ville jo gerne have at den indsætter i ny række for hver gang jeg har kørt en Userform indtastning (altså klikket OK)

Men det kan jo også godt tænkes at den altid sætter ind i det felt men at excel selv skubber bestående data en række ned for hver gang.

Hmmm, må prøve
Avatar billede dsj1972 Juniormester
12. februar 2010 - 12:01 #9
Den der dato kode er den ikk næsten den samme som den jeg lavede,

Kunne du evt. forklare mig hvorfor min version så ikk virker i modsætning til din??

Bare meget rart at vide ;-)
12. februar 2010 - 12:02 #10
Hvis du vil indsætte i første tomme celle ser det sådan her ud

.Range("A65536").End(xlUp).Offset(1,0).Value = txtNavn.Text
12. februar 2010 - 12:05 #11
Date = dags dato
Avatar billede dsj1972 Juniormester
12. februar 2010 - 12:09 #12
aha, ja se det ser bedre ud, det var lige det jeg var ude efter :-)

side spm :
Kan man også overfører en værdi fra afkrydsnings felt over i excel som en tekst værdi.

eks. Userform har:

chkJa = tekst værdi "Ja"

chkNej = tekst værdi "Nej"

Det som forvirre mig lidt her er at afkrydsnings boksen værdi enten læses som aktiv eller ikke aktiv
Avatar billede dsj1972 Juniormester
12. februar 2010 - 12:11 #13
For hutten da, ja du har ret, det var en ordentlig dummert ;-)

det er nok fordi jeg har nappet koden fra en anden kodestump hvor jeg rent faktisk benytter dags dato.

Hold op hvor pinligt at jeg ikk selv havde set den.

Mange tak for den oplysning.
12. februar 2010 - 12:18 #14
har du en checkbox med navnet chkSvar kan du med følgende aflevere andet end true/false

if chkSvar then
  msgbox "Der er hak i checkboksen"
else
  msgbox "Der er IKKE hak i checkboksen"
end if
Avatar billede dsj1972 Juniormester
12. februar 2010 - 12:25 #15
Hmm, enten har jeg misforstået dig eller omvendt.

det jeg mente var:

koden her er med teksboks
Range("A1").Value = txtNavn.Text

hvad nu hvis koden var med option boks

Range("A1").Value = optNavn.Text '  kunne jeg her få defineret værdien som anden tekst f.eks "æbler"

altså ikk noget med msgboks
12. februar 2010 - 12:32 #16
Endnu en gang skal du arbejde lidt selv :-)

if chkSvar then
  .Range("A1").Value = "Ja"
else
  .Range("A1").Value = "Nej"
end if
Avatar billede dsj1972 Juniormester
12. februar 2010 - 12:39 #17
He he, sorry ja du har ret, tror jeg bliver nød til at lægge mig syg, hjernen arbejder ikk så godt lige for øjeblikket ;-)

Jeg vender lige tilbage senere.
Avatar billede dsj1972 Juniormester
12. februar 2010 - 18:56 #18
Ahhh, P.. nu kan jeg ligepludselig ikke åbne får en fejl "5151"
hvor word ikke kan åbne dokumentet muligvis beskadigt.
den forslår at enten reparer filen eller åbne med konverterings program.

der hvor den fejler viser Debug at det er den første fil i Array som ikk kan åbnes.

Men hvis jeg åbner den via Åben ved officeknappen så åbner den fint. og den ser ikk ud til at have nogen beskadigelse.
Men jeg havde en "uventet" nedlukning og derved kan der være sket noget, men bare ikk noget man kan se.

Hva hutten gør man så????
Avatar billede dsj1972 Juniormester
13. februar 2010 - 03:28 #19
Ok, nu er jeg ved at rive det sparsomme hår jeg har tilbage helt ud, af bare arrighed......

nu har jeg prøvet at reparer filerne og det hjalp intet og så prøvede jeg at lave en sprit nye dot filer og det hjalp lige fedt så prøvede jeg at installere office på ny og dette har nu heller intet hjulpet.

Så hæng lige på jeg bliver nød til at lave et spm omkring dette og håbe nogen ved hva hulan der er galt.
Avatar billede dsj1972 Juniormester
27. februar 2010 - 12:24 #20
Ja så er jeg tilbage igen,

Havde lige lidt glemt dette spm.

fik problemet løst.

Det kører rigtig fint med overførelse af data til Excel, endda super godt, dog har jeg opdaget nogle problemer som opstår hvis man undlader at udfylde nogle felter nogen gange.....så kommer data fra næste post til at stå en række højre op da koden altid fylder ud i første tomme felt.

Findes der måske en kode som gør at den efterlader felter tomme og rykker videre til næste.

Og så kan jeg simplthen ikk få den dato kode til at virke.
enten så er der fejl i koden "Type mismatch" eller også hvis jeg laver lidt om på det så kan jeg få den til at virke, dog pånær at den skriver fast i feltet dvs det er låst, man kan ikk skrive i det eller slette det for den sags skyld.
27. februar 2010 - 12:36 #21
Normalt tager man udgangspunkt i en kolonne, hvor man er sikker på, at der altid er værdier og bruger offset til at komme ind til den rigtige kolonne.

Og omkring dato koden må du sende den kode du har nu, så vi har noget at forholde os til.
Avatar billede dsj1972 Juniormester
27. februar 2010 - 13:27 #22
Så hvis man bruger offset, så vil den altid springe en linie ned uanset om der er værdier eller ej i den forgående, er det sådan jeg skal forstå det?



Denne her dato kode, melder den "type mismatch" fejl:

Dim strDato, strFormateretDato As String
    Dim dateDato As Date
   
    strDato = txtDato.Value
    dateDato = DateSerial(Right(strDato, 4), Mid(strDato, 3, 2), Left(strDato, 2))
    strFormateretDato = Format(dateDato, "dd MMM yyyy")
   
    txtDato.Value = strFormateretDato

Og hvis man under Debug holder musen hen over så kan man se f.eks dateDato har værdi som = 00:00:00 ligner jo nærmest en tids format.
Og må lige sige at den altså melder fejl lige så snart man taster det første tal.
27. februar 2010 - 13:32 #23
Nej, som jeg skriver tager man udgangspunkt i en kolonne, hvor der altid er værider til at finde den række der skal indsættes i og derfra bruger man offset til at komme vandret til den kolonne, der konkret skal indsættes i.

Det er interessant at vide, hvilen værdi der står i strDato når koden fejler.
Avatar billede dsj1972 Juniormester
27. februar 2010 - 14:07 #24
så hvis vi altså tager udgangs punkt i f.eks denne her:

.Range("A65536").End(xlUp).Offset(1, 0).Value = strNavn

hvordan offsetter jeg så lige fra første tomme felt som den jo altid indsætter værdi i.

ja du må undskylde jeg spørger dumt, men søge funktionen i 2007 er intet værd, fortryder rigtig meget at jeg er sprunget på office 2007. Når men finder vel nok ud af det hen af vejen :-)

mht strDato så står der det første tal som man taster i txtDato og så fejler den
Avatar billede dsj1972 Juniormester
27. februar 2010 - 14:57 #25
aha, nu fandt jeg ud af den med offset

så den næste hedder:

.Range("A65536").End(xlUp).Offset(0, 1).Value = strEfterNavn

og så rykker den ellers med en for hver kolonne (0, 2) og (0, 3) o.s.v
Avatar billede dsj1972 Juniormester
28. februar 2010 - 14:51 #26
Så fandt jeg da også lige ud af det med dato formatet.

Koden var sådan set rigtig nok, var bare for det første placeret forkert og for det andet have jeg samme strDato et andet sted, og ville derfor ikk gå videre.

så derfor slettede jeg bare linien:

  strDato = txtdato.Value

Og så virker det. Nu mangler jeg bare at løse nogle små "skønheds fejl og nogle forbedringer så det bliver helt i top.


Smid lige et svar så får du point for hjælpen .
28. februar 2010 - 14:56 #27
Fint nok :-)
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



IT-JOB

Cognizant Technology Solutions Denmark ApS

Service Line Specialist - ServiceNow (Thirdera)

Cognizant Technology Solutions Denmark ApS

Service Line Specialist – EPS – SAP

Netcompany A/S

Test Specialist

Udviklings- og Forenklingsstyrelsen

Serverdrift-specialist til Team Planning Tools