Avatar billede skumle Nybegynder
06. november 2007 - 21:22 Der er 10 kommentarer og
1 løsning

Export af tabeller fra Word til en database eller en separeret fi

Hej Eksperter
Jeg har en wordfil med en en kogebog, kogebogen er organiseret med en opskrift i en tabel pr. side. Opskrifterne kommer fra en database som af forskellige årsager er gået tabt.
Nu vil jeg gerne have flyttet opskrifterne, ca 1800 stk, fra wordfilen tilbage i en DB.

Tabellen med en opskrift ser nogenlunde således ud:
+-----------------------------------------+
|Opskriftnavn: Bla Bla        |ID: 1234  |
+-----------------------------------------+
|Ingredienser:                            |
|Ingrediens 1                            |
|Ingrediens 2                            |
|Osv                                      |
+-----------------------------------------+
|Fremgangsmåde:                          |
|fhdks fdssdanfk jlskjf...                |
+-----------------------------------------+

Jeg har været igang med at google, og kan da sagtens finde løsninger som kan bruges hvis dataene er organiseret i kollonner, men desværre ikke et fatcit på mit problem. Så nu sætter jeg min lid til jer... Eksperterne... :)


/Bjarne
Avatar billede mugs Novice
06. november 2007 - 21:26 #1
Jeg har ikke løsningen på dit spørgsmål. Men jeg "gør det" også i en opskriftsamling i Access. som en inspiration til din db, er du velkommen til at få den. Du kan blot lægge din e-mail.
Avatar billede fdata Forsker
06. november 2007 - 21:43 #2
I første omgang skal du nok lige forklare, om du vil have forklaret fremgangsmåden - eller om du bare vil have løst opgaven.
Hvis du bare vil have den løst, er der en lille detalje med reglerne, der gør det en anelse "ulovligt" at løse opgaven udenom e; men man plejer at tackle det ved at forklare løsningen her i spm efterfølgende.
Send evt Word filen til mail snabela f-data.dk, så returnerer jeg en lille base, der "suger" opskrifterne ud af Word dokumentet
Avatar billede skumle Nybegynder
06. november 2007 - 21:57 #3
Hej Igen
Målet er selfølgelig at få løst opgaven, jeg vil klart foretrække en forklaring på fremgangsmåden, på den måde tror jeg på at jeg også lærer noget, til næste gang :)

/Bjarne
Avatar billede fdata Forsker
06. november 2007 - 22:03 #4
Godt så.
Øjeblik, så er jeg tilbage med en model ...
Avatar billede fdata Forsker
06. november 2007 - 22:47 #5
Så er jeg klar.

Forudsætninger:
- Opret en formular (Formular1) med en tekstboks (TekstBoks1)
- Opret en tabel med 4 felter (ID, Opskriftnavn, Ingredienser og Fremgangsmåde)
  Felttyperne skal være Langt heltal, Tekst, Notat og Notat

Fidusen er så, at vi lader Access gennemløbe dit dokument og samle oplysningerne op. Der søges efter ordet "Opskriftnavn". Herefter hoppes der fra celle til celle.

Her følger koden (som er testet på en struktur som den, du har anført i spm):

Option Compare Database
Option Explicit

Const wdStory = 6
Const wdCell = 12
Const wdCharacter = 1

Private Sub Hent_Opskrifter()
  Dim WordApp As Object
  Dim S As String
  Dim ID As String
  Dim Opskriftnavn As String
  Dim Ingredienser As String
  Dim Fremgangsmåde As String
 
  DoCmd.OpenForm "Formular1"    ' Skal vi bruge til klippe/klistre
 
  Set WordApp = CreateObject("Word.Application")
 
  With WordApp
    .Visible = True
    .Activate
    .WindowState = 1
   
    .ChangeFileOpenDirectory "C:\Temp\"
    .Documents.Open Filename:="Opskrifter.doc"
 
    ' Hop til start
    .Selection.HomeKey Unit:=wdStory
   
    ' Søg efter "Opskriftnavn"
    .Selection.Find.ClearFormatting
    With .Selection.Find
      .Text = "Opskriftnavn"
    End With
   
    ' Gennemløb alle sider
    Do
      .Selection.Find.Execute
      .Selection.MoveRight Unit:=wdCell
      .Selection.MoveLeft Unit:=wdCell
      .Selection.Copy
      Forms!Formular1.TekstBoks1 = Null
      Forms!Formular1.TekstBoks1.SetFocus
      RunCommand acCmdPaste
      Forms!Formular1.Refresh
      S = Forms!Formular1.TekstBoks1
      Opskriftnavn = Replace(S, "Opskriftnavn: ", "")
     
      ' Næste celle: ID
      .Selection.MoveRight Unit:=wdCell
      .Selection.Copy
      Forms!Formular1.TekstBoks1 = Null
      Forms!Formular1.TekstBoks1.SetFocus
      RunCommand acCmdPaste
      Forms!Formular1.Refresh
      S = Forms!Formular1.TekstBoks1
      ID = Replace(S, "ID: ", "")
     
      ' Næste celle: Ingredienser
      .Selection.MoveRight Unit:=wdCell
      .Selection.Copy
      Forms!Formular1.TekstBoks1 = Null
      Forms!Formular1.TekstBoks1.SetFocus
      RunCommand acCmdPaste
      Forms!Formular1.Refresh
      S = Forms!Formular1.TekstBoks1
      Ingredienser = Replace(S, "Ingredienser: ", "")
     
      ' Næste celle: Fremgangsmåde
      .Selection.MoveRight Unit:=wdCell
      .Selection.Copy
      Forms!Formular1.TekstBoks1 = Null
      Forms!Formular1.TekstBoks1.SetFocus
      RunCommand acCmdPaste
      Forms!Formular1.Refresh
      S = Forms!Formular1.TekstBoks1
      Fremgangsmåde = Replace(S, "Fremgangsmåde: ", "")
 
      ' Opret post
      DoCmd.SetWarnings False
      DoCmd.RunSQL ("INSERT INTO Opskrifter(ID, Opskriftnavn, Ingredienser, Fremgangsmåde)" & _
            " SELECT " & ID & ",'" & Opskriftnavn & "','" & Ingredienser & "','" & Fremgangsmåde & "'")
      DoCmd.SetWarnings True
 
      ' Flyt markør - klar til næste side
      .Selection.MoveRight Unit:=wdCharacter, Count:=1
    Loop Until False
  End With

End Sub

Håber, du kan få det til at spille.
Avatar billede fdata Forsker
06. november 2007 - 22:50 #6
PS: Jeg har ikke brugt tid på at rydde op i variable osv. Desuden går kørslen ned efter sidste post; men der bliver jo ikke givet karakter for det kunstneriske indtryk, så det går jo nok. Posterne bliver i hvert fald oprettet.
Avatar billede skumle Nybegynder
07. november 2007 - 20:09 #7
Det ser fint ud, jeg har lige et par spørgsmål. I koden står:
    .ChangeFileOpenDirectory "C:\Temp\"
    .Documents.Open Filename:="Opskrifter.doc"
De 2 linier referer til folderen hvor wordfilen skal ligge, samt filnavnet på wordfilen?

Jeg forstår vist ikke lige helt accessdelen, hvor sætter jeg koden ind?

/Bjarne
Avatar billede fdata Forsker
08. november 2007 - 00:34 #8
Har modtaget Word fil i lidt anderledes format.
Udarbejder en løsning ...
Avatar billede fdata Forsker
08. november 2007 - 21:05 #9
Database sendt retur. Der var lidt flere celler i Word-tabellen og lidt apostroffer, der skulle erstattes; men ellers er løsningen i store træk den ovenfor beskrevne.
Avatar billede skumle Nybegynder
09. november 2007 - 07:35 #10
Det spiller bare, KANONT, 1000 tak for hjælpen, og her er dine point, dem har du fuldt fortjent
Avatar billede fdata Forsker
10. november 2007 - 18:43 #11
Tak for de pæne ord og tak for point  ;o)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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

Udviklings- og Forenklingsstyrelsen

Driftsspecialist til tværfagligt team

Aller Media A/S

Fullstack Developer

Rohde & Schwarz Technology Center A/S

FPGA-udvikler