Avatar billede ucjhd Nybegynder
19. januar 2011 - 20:49 Der er 6 kommentarer og
1 løsning

Macro, TransferSpreadsheet, Export til Excel fil med variable navn

Jeg vil gerne eksportere data til en række Excel filer (fil per land). Data bliver genereret fra en query 'Query1' hvor data der er med i udtrækket (land) afhænger af valg i en Combo box i en form '[Forms]![Form1]![CLand]'. Jeg ønsker at land valget i combo boxen indgår i filnavnet f.eks. 'Info Tyskland.xls', hvor tyskland er valget i combo boxen.

Jeg kan godt få det til at virke i visual basic code:

DoCmd.TransferSpreadsheet acExport, 8, "Query1", "G:\Info " & [Forms]![Form1]![Cland] & ".xls

men hvad hulen er syntaksen når jeg hellere vil have gøre det i en macro med TransferSpreadsheet kommandoen. Når jeg i 'File name' feltet skriver:
G:\Info  & [Forms]![Form1]![Cland] & .xls
kommer filen til at hedde nøjagtig som det står og ikke med den indsatte værdi af [Cland]. Og den vil ikke køre hvis det indsættes i appostroffer " ".

Er der nogen der har en ide til hvad der skal skrives for at få det til at virke i en macro??
Avatar billede greybeard Nybegynder
19. januar 2011 - 22:28 #1
Prøv lige G:\Info  & [Forms]![Form1]![Cland].[value] & .xls
Avatar billede fdata Forsker
19. januar 2011 - 22:34 #2
Eller brug en lille funktion i stil med:

Function Filnavn()
  Filnavn = "G:\Info\" & Forms!Form1.Cland & ".xls"
End Function

Læg funktionen i et vilkårligt modul og kald den så i makroen, altså i feltet Filnavn skriver du:
  =Filnavn()

(du skal jo nok finde på et mere begavet navn end Filnavn til funktionen; men det her er i hvert fald princippet)
Avatar billede hugopedersen Nybegynder
20. januar 2011 - 06:51 #3
Hvorfor skal det absolut gøres i en makro?

En makro er ikke nær så fleksibel som VBA kode.
M$ anbefaler rent faktisk at man laver så mange makroer som muligt om til VBA.

Jeg plejer selv kun at have 2 makroer i mine applikationer. Autoexec og Autokeys - de kan ikke bare lige laves om.
Avatar billede ucjhd Nybegynder
20. januar 2011 - 20:49 #4
Jeg har forsøgt med #1 løsningsforslag, men det lykkedes ikke lige. Fik en 'Can not update' statement. Har lidt en formodning om at årsagen skal søges i at der ikke køres USA/engelsk tegnsætning.

Til #2. Jeg kan godt få en VBA løsning til at fungere, så det er mere en irritation at jeg ikke kan få det til at fungere direkte fra macroen.



Til #3. Jeg har anvendt Access ganske intensiv gennem de seneste 20 år. Programmer er i dag, som det var for 20 år siden, i en klasse for sig. Jeg har aldrig mødt andre database programmer, hvor det på samme måde er muligt at opbygge avancerede semi-professionelle løsninger uden at skulle kode en eneste linie. På dette område er Access i en klasse for sig selv.

Og hvorfor så ingen kodning? Jeg er godt klar over at hvis man begynder at VBA kode kan Access endnu flere ting, men i samme øjeblik man bevæger ind på dette område holder løsningen op med at kunne vedligeholdes af almindelig brugere og bliver i stedet et nørd løsning. Og for nørd- og professionelle løsninger findes der langt mere egnede værktøjer end Access.

Access's enestående egenskab er netop at den, bla. vha. af de let forståelige Macro'er, giver almindelige brugere et slagkraftig og unique brugervenligt værktøj til små lokale applicationer og til behandling af større datamængder.
Avatar billede hugopedersen Nybegynder
21. januar 2011 - 07:03 #5
#1 - ingen forslag
#2 - der er altså ting der ikke kan lade sig gøre i en makro. Blandt andet at indsætte værdier fra forms eller variable. Der skal en VBA funktion til.
#3 - Nu er det sådan at det lige tager lidt tid før Access har været på markedet i 20 år :-)
Version 1.0 kom i 1992 og version 1.1 i 1993 (7 stk 1.44 disketter - det var tider) At både version 1.0 og 1.1 så havde store problemer med datakorruption når man kom lidt op i datamængder er en anden sag.

At lave større databaser uden at bruge VBA vil jeg ikke bryde mig om. Det største af mine projekter har lige lidt over 110.000 linier kode når jeg laver en komplet udskrift via Total Access Analyzer (som er et ganske godt produkt fra FMS Inc.) At skulle alve et sådan system uden VBA vil simpelthen ikke være muligt.
Avatar billede Slettet bruger
22. januar 2011 - 11:28 #6
ucjhd:Du har netop eftervist at udtryk som:
G:\Info & [Forms]![Form1]![Cland] & .xls
ikke kan parses som makro argument - fordi alt betragtes som en streng.

Det ville, med dine egne ord, være for kryptisk til den almindelige bruger, som ikke ved at der er noget der hedder strenge og reglerne for deres sammensætning med andre udtryk

Af andre grunde har du ramt loftet for makroers anvendelighed - hvad hvis form1 ikke er åben? Hvad hvis Cland=null?

Jeg har aldrig skænket det en tanke, men du ret i at makroer kan anvendes som del af brugerinterface - tak for den påpegning.
Avatar billede fdata Forsker
19. juli 2011 - 20:24 #7
Takker 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