Avatar billede 2hans Juniormester
25. februar 2007 - 13:29 Der er 14 kommentarer og
1 løsning

afvikle makro fra excell i access

Hej

Jeg vil gerne kunne aktivere en makro i access når jeg er i regneark i ecxell. Er der nogen der har en ide om hvordan det lader sig gøre ?

Mvh
Hans N.
Avatar billede kabbak Professor
25. februar 2007 - 14:16 #1
Shell ("C:\Programmer\Microsoft Office2003\OFFICE11\MSACCESS.EXE C:\Data\db13.mdb /x FraExcel")

FraExcel, er min makro

Husk rette sti til Access
Avatar billede 2hans Juniormester
25. februar 2007 - 14:42 #2
Hej Kabbak :)

Mange tak for koden, det ser ud til at det er i den retning, jeg skal hen, men jeg kan ikke få den til at fungere, idet Acces kommer med følgende fejlmedd.: "et argument i den kommandolinie, der blev brugt til at starte Microsoft Office Access, genkendes ikke af MikroSoft Office Access."

Min kodelinie ser sådan ud:

Shell ("C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.exe C:\db1.mdb /KørTilføjelse1 FraExcel")

Håber at du kan se hvilken fejl jeg har kludret ind i linien :)

Mvh
Hans N
Avatar billede kabbak Professor
25. februar 2007 - 14:50 #3
Har du tjekket at MSaccess.exe ligger på den sti du angiver.
Du mangler /x foran makronavnet.

Et makronavn med mellemrum er ikke godt
burde se sådan ud
/x KørTilføjelse1_FraExcel")
Avatar billede 2hans Juniormester
25. februar 2007 - 14:56 #4
Hej igen Kabbak

Så fungerede det, det var makronavnet og det manglende x der var problemet. Mange tak, Points er på vej :)

Mvh
Hans N.

NB! hvis du skulle have et tips til, hvordan det skulle se ud,hvis access ER åben når man kører kommandoen ville jeg blive rigtig fornøjet :)
Avatar billede 2hans Juniormester
25. februar 2007 - 15:07 #5
Jeg kan ikke rigtigt se nogen steder, hvordan jeg er i stand til at give dig dine point. Er det noget med forskel på svar og kommentar ?

Mvh
Hans N.
Avatar billede kabbak Professor
25. februar 2007 - 15:09 #6
Jeg skal svare først ;-))

til dit andet spørgsmål, hvis Access er åben

Sæt reference til Microsoft Access object

DoCmd.RunMacro "Makronavn"
Avatar billede kabbak Professor
25. februar 2007 - 15:11 #7
Sæt reference til Microsoft Access object
skulle være

Sæt reference til Microsoft Access xx.x object libaray
Avatar billede kabbak Professor
25. februar 2007 - 15:46 #8
Tak for point ;-))
Avatar billede 2hans Juniormester
25. februar 2007 - 15:49 #9
Velbekomme :)

Men.. jeg kan ikke få Sæt reference til at fungere..ugyldig syntax.

Mvh
Hans N
Avatar billede kabbak Professor
25. februar 2007 - 16:47 #10
I VBA menuen vælg > Tools > Reference

der finder du den og sæt så flueben i feltet udfor, slut med ok
Avatar billede kabbak Professor
25. februar 2007 - 17:20 #11
Prøv lige at sætte den kode du brykker på herind.
Avatar billede 2hans Juniormester
25. februar 2007 - 18:18 #12
Hej igen

Nu spiller det, takket være den sidste oplysning om sæt fererence, jeg troede nemlig jeg selv skulle skrive kodelinien i makroen :)

Det er en større historie jeg roder med, fordi jeg trækker data fra web ind i excell og behandler dem der, for så at gemme dem i access basen.

Sub Web_til_excell2()
'
' Web_til_excell2 Makro
' Makro indspillet 22-02-2007 af Hans Nissen
'
' Genvejstast: Ctrl+Skift+T
'
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Sheets("Ark2").Select
    Range("C2:K2").Select
    Range("K2").Activate
    Selection.Delete Shift:=xlToLeft
    Sheets("Ark1").Select
    Range("B1").Select
    Selection.Copy
    Sheets("Ark2").Select
    Range("C2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("D2").Select
    Sheets("Ark1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("B3").Select
    Selection.Copy
    Sheets("Ark2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("E2").Select
    Sheets("Ark1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("C3").Select
    Selection.Copy
    Sheets("Ark2").Select
    Range("E2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("H2").Select
    Sheets("Ark1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("D1").Select
    Selection.Copy
    Sheets("Ark2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("I2").Select
    Sheets("Ark1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("D5").Select
    Selection.Copy
    Sheets("Ark2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("J2").Select
    Sheets("Ark1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("B5").Select
    Selection.Copy
    Sheets("Ark2").Select
    ActiveSheet.Paste
    Range("K2").Select
    Sheets("Ark1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("B6").Select
    Selection.Copy
    Sheets("Ark2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Ark1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Sheets("Ark2").Select
    Range("E2").Select
    Selection.TextToColumns Destination:=Range("E2"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
    Sheets("Ark1").Select
    Range("A1").Select
        DoCmd.RunMacro "excell_til_access"
End Sub

Hvis du har et godt tips til automatisering af hentningen fra web, vil det være fedt :_)

Mvh
Hans N.
Avatar billede kabbak Professor
25. februar 2007 - 21:26 #13
Jeg har kikket lidt på koden,

Genvejstast: Ctrl+Skift+T
'
    Range("A1").Select
    ActiveSheet.Paste ' HVOR KOMMER DET FRA, DET DU SÆTTER IND HER
    Range("A1").Select
    Sheets("Ark2").Select
    Range("C2:K2").Select
    Range("K2").Activate
    Selection.Delete Shift:=xlToLeft ' HER SLETTER DU C2:K2 OG RYKKER RÆKKEN TIL VENSTRE
    Sheets("Ark1").Select
    Range("B1").Select
    Selection.Copy ' HER KOPIERER DU ARK1 B1
    Sheets("Ark2").Select
    Range("C2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False' HER SÆTTER DU VÆRDIEN IND I ARK2 C2
    Range("D2").Select
    Sheets("Ark1").Select
    ActiveSheet.Paste' HER SÆTTER DU SAMME DATA IND I ARK1 B1, HVORFOR ??


Koden kunne trimmes en del, hvis jeg forstod hvorfor du sætter ind 2 gange, den ene gang i Ark2 , som ren værdi, og senere i Ark1 som normal.

du skriver:
'Hvis du har et godt tips til automatisering af hentningen fra web, vil det være fedt :_)'

Er det fra internettet, mange steder ligger data som tabeller, som excel udmærket kan hente automatisk.

I menulinien
Data > Importer eksterne data > Ny Web forespørgsel

Tabellerne vises som gule pile på siden
Avatar billede kabbak Professor
25. februar 2007 - 21:42 #14
Her er en makro, som er optaget via web forespørgsel, du kan teste med den.

Makroen køres kun 1 gang, du kan opdatere listen ved at højreklikke på en celle i området og vælg opdater.

Det er det samme som ved en Pivot tabel

Sub Makro1()

    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.nysynet.dk/hjuldata.htm", Destination:=Range("A1"))
        .Name = "hjuldata"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub
Avatar billede 2hans Juniormester
25. februar 2007 - 22:57 #15
Hej igen

Jeg har tidligere forsøgt med web forespørgslen, men den virker ikke på den side jeg henter fra. Tror det har noget at gøre med frames at gøre.

Istedet åbner jeg websiden, en intrasuiteside, kopierer data, og lægger dem ind i ecxell.

Dataeksempel:
Virksomhed:    Dansk Autohjælp Fredensborg ApS     CVRnr:    76134111
Kaldenavn:    Fredensborg Dæk ApS     moms-senr. :    76134111
Adresse:    Præstemosevej 7     3480 Fredensborg   
Telefonnr.    48466670    Senr    76134111-0000
Telefax.        Ansatte    okt-19


For at få data korrekt ind i Access, transponerer jeg dem, således, at tekst står i øverste række, og data i rækken under.

Navn            Adresse    Postnr          Cvr      Senr          VTlfnr 
Dansk Autohjælp Præstemosevej 7  3480 Fredensborg  76134111  76134111-0000 48466670       
Derefter henter jeg data ind i access.

Det er en lidt omstændelig gang rod, men jeg kan ikke rigtigt finde andre udveje :)

Mvh
Hans N.
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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