Just nu i M3-nätverket
Jump to content

Macro på mottagen data


Tok-Torsten

Recommended Posts

Halloj, jag har gjort ett macro för att bearbeta data i excelformat från leverantörer.

Det fungerar att köra men hur är det bäst att göra egentligen. Skall macrot ligga med i den mall som leverantörerna fyller i eller finns det något snyggt sätt att ta leverantörsfilerna och köra macrot på dem. (De skriver en textfil som skall föda en databas.)

Det kommer bli ganska många filer i framtiden så det vore bra om det inte var för krångligt.

Jag har testat mitt macro med att kopiera över data från en leverantörsfil in i mitt excelark.

 

Hej, Torsten

 

Link to comment
Share on other sites

Där det är enklast för dig och enklast för de som ska använda boken!

 

Leverantörerna ska ju helst ha en så enkel bok som möjligt, en bok de bara kan rakt av fylla på med sidan värden, en bok där så lite som möjligt kan gå fel. Dvs inga makron, ingen VBA-kod är alltid trevligt.

Sedan vet jag ju inte vad du ska göra, hur det ser eller så. Men koden kan ju ligga i boken och du kör denna när du får mallen.

 

Eller så har du en egen bok där koden finns som du applicerar på den andra boken. Kanske först importerar data från mallen och sedan formaterar/sammanställer eller vad du nu gör. Eller alternativt ha ett tillägg som du applicerar på mallen... ja du, alternativen är många bara att välja det som passar dig och leverantören bäst.

 

 

Men minns en liten men viktigt detalj - om det går att göra något med formler på bladet direkt är det alltid att föredra jämfört med VBA-kod.

 

Du får nog berätta lite mer vad det är du vill göra, vad det är du har, hur mycket arbeta det är, vilket typ av arbete det är du ska utföra på mallen.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Hej igen,

jag kommer få mätdata från leverantörer som fyller i en redan spikad mall. Excel har valts eftersom alla företag idag redan har excel och Ja jag vet att det hade gått att göra ett webgränssnitt som gör vad jag skall göra men den lösningen har inte valts.

Utifrån dessa Excel dokument som kommer via mail skall jag sedan översätta vart och ett till ett standardformat för mätdata vilket vi kan föda en databas med.

Översättningen från mallen till textfilen fungerar nu fint. I alla fall enligt spec men det finns en del oklarheter som behöver redas ut. Den går att läsa in i db.

 

Helst skulle jag inte vilja lämna ut översättaren då den är anpassad för bara vår db.

Finns det något snyggt sätt att läsa in leverantörsfiler från en specad katalog och sedan applicera macrot på en fil åt gången.

Dvs den som tar emot filerna sparar filerna till en katalog för att därefter skapa en textfil per emottagen fil.

 

Usch, dagen börjar dra sig mot sitt slut och jag känner att jag inte lyckas formulera mig vidare koncist längre.

 

Har du något förslag, Torsten

 

Link to comment
Share on other sites

Det går utmärkt det du skriver. Frågan är dock, hur mycket hjälp behöver du på vägen.

 

Gången kommer alltså vara

1: leverantören fyller i en mall i Excel som skickas till er. Mallens utseende är känt och spikat

2: Ni tar emot denna mall och vill göra en halvautomatisk behandling av den till ett text-format som eran databas kan läsa in.

3: Läsa in i databasen

 

 

Rekommenderas att mallen utformas med namngivna celler som är enkla att adressera från VBA.

 

Till saken - det är inga större problem att via kod i en arbetsbok, gå igenom alla filer i en mapp, öppna dem, bearbeta och spara ned resultatet med givet namn på given plats.

 

Här har du en del exempel på filhantering med VBA

http://xldennis.se/filmappar%28vba%29.htm

 

Låt oss börja med det.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Än en gång ett väldigt bra svar.

Jag har börjat försöka sätt mig in i matrl på länken men det fanns ju så mycket annat intressant också, när man letade runt lite.

 

Får väl labba lite med dessa nyvunna möjligheterna innan jag återkommer om jag inte lyckas få det att fungera i mitt specifika fall.

 

Hej, Torsten

 

Link to comment
Share on other sites

Nu har jag testat en del med dessa nyvunna kunskaper.

Det fungerar fint att läsa in en hel rad filer på detta sätt. Jag är inte helt säker men eventuellt skulle jag vilja komma förbi öppnadialogen och öppna alla filer som finns i den utpekade foldern utan att användaren skall behöva markera filerna i foldern.

Går det?

 

Nästa steg för mig vore att flytta processade filer till en annan katalog. Detta borde jag kuna fixa med ett "Save as" -macro för att spara över men vad skall jag använda för att ta bort en processad fil.

 

Hej, Torsten

 

Link to comment
Share on other sites

1: Välja mapp. du har funktionen PickFolder på denna sida:

http://xldennis.se/oppna%28vba%29.htm

med inspiration från denna sida:

http://xldennis.se/TabortFiler%28vba%29.htm

ser du att med kommandot Dir kan du stega genom alla filer med viss namn i en mapp.

för att sedan öppna eller radera eller kopiera eller vad du nu vill göra med dem.

 

2: flytta/kopiera/radera.

Nog bäst att flytta genom detta kommando:

'Flytta fil och ändra filnamnet.
Name "c:\XL-Dennis.xls" As "c:\xl\XL-Dennis\Test.xls" 

från en annan av sidorna i tidigare länk.

 

Troligen är bästa metoden för detta hela att först via Dir hitta alla filer, spara dessa i en array av något slag, behandla och flytta filerna en efter en i arrayen.

Uppräkning som Dir gör kan få lite lustiga saker för sig om samlingen (filerna) ändras under tiden som de gås igenom.

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Hej igen,

om jag inte missförstår instruktionerna på Dennis sida, så borde jag kunna använda mig av Name "" As "" för att flytta processade filer från inkatalogen till processade fil katalogen.

 

Då mina sökvägar är väldigt långa, de blir svåra att överblicka har jag valt att skapa variabler som jag försöker använda i ovanstående kommando. Jag fastnar varje gång jag försöker köra det.

Variabel definitionen har jag kollat med hjälp av en msgbox och där ser det ju så fint ut. Skall det vara något annat än Stringar eller vad kan det bero på?

 

 ' MOVE Macro
' Macro recorded 2009-08-24 by Torsten Beckman
'   DETTA MACRO SKALL KUNNA FLYTTA FILER SAMT ÄVEN ÄNDRA NAMN PÅ DEM.
'   MIN AVSIKT ÄR ATT BARA FLYTTA DEM.
'Sub Move_Rename_One_File()
'You can change the path and file name
Dim fulloldpath As String
Dim filename As String
Dim fullnewpath As String

fulloldpath = ActiveWorkbook.FullName


filename = ActiveWorkbook.Name
fullnewpath = "C:\Documents and Settings\v084183\Desktop\GEOM 3P\\Processed files\" & ActiveWorkbook.Name

  MsgBox "Filename= " & filename & "    Fulloldpath= " & fulloldpath & "    Fullnewpath= " & fullnewpath

   Name fulloldpath As fullnewpath
End Sub

 

 

ed av moderator - kod-taggar uppskattas

 

[inlägget ändrat 2009-08-25 17:26:35 av Monshi]

Link to comment
Share on other sites

I mitt förra inlägg så kan ni se hur långa mina sökvägar blir.

Borde det inte gå att använda sig av ngt liknande %TEMP%/Desktop...

jag får det inte att fungera.

 

Link to comment
Share on other sites

Vart vill du flytta filerna? Man bör inte hårdkoda sökvägar, tänk om någon annan använder arbetsboken exempelvis.

 

Vill du flytta dem relativt där de nu ligger? Till plats blad användares filer?

 

Kanske enklast är att poppa upp en spara-dialog där du får välja målmapp? Kanske spara detta värde i en cell på ett arbetsblad?

 

Om du vill hitta Temp-mapp, användarens hemma mapp eller liknande undrar jag om du inte måste ut i Windows API för att hämta dessa, se ett exempel på Temp här.

http://vbadud.blogspot.com/2007/04/visual-basic-function-to-get-temporary.html

http://www.cpearson.com/excel/SpecialFolders.aspx

http://www.dailydoseofexcel.com/archives/2009/02/26/get-the-path-to-my-documents-in-vba/

 

Lite mer om filhantering:

http://www.rondebruin.nl/folder.htm

 

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...