eiroa Skrevet 27. august 2005 Del Skrevet 27. august 2005 Jeg har mange Excelbøker, laget fra en mal, som har forskjellige filnavn alt etter som hva de er lagret som. Jeg skal i vba koden, som kodes i malen, referere til den boken som for øyeblikket er åpnet. Jeg skal kopiere over ting fra denne boken til en ny bok. Den nye boken har samme filnavn hver gang, så det er ikke noe problem. Problemet er hvordan å få kodet noe som kan referere til den første boken som har forskjellige filnavn hele tiden? Malen er en fakturamal jeg har lagd, når fakturaen er skrevet blir den lagret med et nummer og navn som er forskjellig hver gang. Det er når jeg åpner en av disse og skal kjøre en kode som kopierer en del ting fra denne boken og over i en ny jeg ikke vet hvordan jeg skal kode det. Nå har jeg kodet det som "Faktura0" og må derfor forandre filnavnet til dette før jeg åpner den aktuelle boken for å kjøre koden. Svært tungvindt for å si det mildt! Dette er mitt først innlegg i noe forum noensinne, håper det er sånn passelig forståelig. På forhånd takk for all hjelp! Lenke til kommentar
aadnk Skrevet 27. august 2005 Del Skrevet 27. august 2005 Betyr dette at den filen du til enhver til vil referere til er den nyeste av mulige valgmuligheter? I så fall burde det holde med følgende prosedyre: Public Function FindNewest(ByVal sPath As String, sExtension As String, Optional Flags As VbFileAttribute = vbNormal) As String Dim sFile As String, sNewest As String ' Forsikre oss om at mappestien er gyldig sPath = sPath & IIf(Right(sPath, 1) = "\", vbNullString, "\") ' Vi finner først den første filen i mappen sFile = Dir(sPath, Flags) ' Anta i førstingen at dette er den nyeste filen sNewest = sFile ' Finn filer inntil enden av mappen er nådd Do Until LenB(sFile) = 0 ' Se først om filen korresponderer med etternavnuttrykket If sFile Like sExtension Then ' Se om denne filen er nyere enn den antatte fil If FileDateTime(sPath & sNewest) < FileDateTime(sPath & sFile) Then ' Bruk denne fil i stedet sNewest = sFile End If End If ' Finn den neste filen (dersom igjen filer gjenstår, er resultatet tomt) sFile = Dir Loop ' Returner den nyeste filen i mappen FindNewest = sPath & sNewest End Function Dersom du skal finne den nyeste Excel-filen i en gitt mappe, benyttes følgende kode: ' Finn den nyeste Excel-filen i vår mappesFile = FindNewest("C:\En mappe\En undermappe\Excel-filer\", "*.xls") Om det skulle være nødvendig å begrense søket, eksempelvis til kun Excel-filer som begynner med Faktura, kan noe slikt benyttes: ' Finn den nyeste Excel-filen i vår mappesFile = FindNewest("C:\En mappe\En undermappe\Excel-filer\", "Faktura*.xls") Lenke til kommentar
eiroa Skrevet 27. august 2005 Forfatter Del Skrevet 27. august 2005 Takker for interessen, har nok ikke forklart meg godt nok. Jeg har en faktura mal (.xlt), når jeg bruker den lagrer jeg en kopi (.xls) med navn 01 Andersen, 02 Pettersen osv. Når jeg som byggmester skal fakturere en á-konto regning (del regning) fra denne kopien som kan være den 6. siste eller nest siste, det er helt tilfeldig, så finner jeg den lett i utforsker og åpner den selv derfra. Deretter trykker jeg på en á-konto knapp som starter en kode som åpner en ny á-konto mal, den heter faktura.xlt. "Faktura.xlt" er enkelt å referere til i koden når denne skal kopiere over noe innhold til "Faktura.xlt". Problemet er hvordan referer jeg til "01 Andersen", "02 Pettersen" eller "22 Olsen" alt etter hvem jeg åpner for å fakturere en á-konto regning til. Har hitil måttet forandre navnet fra f.eks "01 Andersen" til "Faktura0" før jeg åpner den aktuelle fila. Jeg har i koden brukt "Faktura0" for f.eks "02 Pettersen" som det kopieres fra og "Faktura.xlt" for den nye malen det limes inn i. Må finne en eller annen kode som kan referere til filnavnet på boka som er aktiv i det jeg trykker på á-konto knappen som er i den samme boka. (f.eks "02 Pettersen") Håper dette avklarer litt. Takker så mye for all hjelp! Lenke til kommentar
eiroa Skrevet 3. september 2005 Forfatter Del Skrevet 3. september 2005 Har funnet ut hvordan man refererer til til den ene boken som har forskjellig filnavn hver gang. Man bruker bare "ThisWorkbook", det blir da alltid referert til den boka som koden står i. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå