11. juni 2010 - 12:11Der er
5 kommentarer og 1 løsning
Lukke regneark hvis navn er i en variabel
Hej Excel 2003, vba Åbner en Workbook(2) fra en allerede åben Workbook(1) med kommandoen Flt = "Excel mappe(*.xls),*.xls," Titel = "Find and select the Month Report" Filnavn = Application.GetOpenFilename(Flt, 1, Titel) If Filnavn = False Then Exit Sub Workbooks.Open Filnavn Herefter markerer og kopierer jeg data og returnerer til Workbook(1), hvor jeg indsætter de relevante data.
Når dette er gjort vil jeg gerne lukke WorkBook(2) uden at få dialogbokse op omkring udklipsdata og lignende. Den skal bare lukkes uden at gemme.
Workbook(1) er aktiv, luk Workbook(2), Herefter Workbook(1) igen aktiv.
Jeg kender excelnavnet på Workbook(1), men jeg kender ikke excelnavnet på Workbook(2), bortset fra at variablen Filnavn indeholder excelnavnet på denne.
Men jeg har et forståelses problem omkring det at lukke en en Workbook hvis "substitutnavn" er Filnavn og ikke f.eks. Mitregneark.xls. Kan I hjælpe
Tak for buddet. Med det valgte regneark - mener du så det regneark jeg henter ind ind med Åbnerutinen.? Det formoder jeg.
Dette regneark - workbook(2)- er genereret af et "system" og det er ikke muligt at placere vba kode i det. Det vil være et nyt regneark hver måned, med et nyt navn.
Jeg bruger Workbook(2) i min VBA rutine, hvor jeg efter kommandoen Workbooks.Open Filnavn '(Filnavn er en variabel der indeholder det komplette Excelnavn på Workbook(2)) kan vælge faner, kolonner o.s.v og kopiere til variabler. Det vil sige - nu er Workbook(2) aktiv, alias Filnavn
Herefter returnerer jeg til min allerede åbne Workbook(1) med kommandoen Windows("Workbook(1).xls").Activate hvor jeg indsætter data som jeg kopierede fra Workbook(2)
Nu savner jeg så at kunne lukke Workbook(2) pænt efter mig.
Workbook(1).xls er aktiv Hvordan lukker jeg nu Workbook(2).xls som jeg ikke kender excelnavnet på, men som jeg kender som variablen Filnavn. (Variablen Filnavn indeholder det komplette excelfilnavn. og jeg vil gerne retur til Workbook(1)
2 knapper på workbook(1) - en som åbner fildialogboksen - en som lukker workbook(2), uanset hvad den hedder ??
VBA kode i Workbook(1)
(General declarations)
Dim data As DataObject Public fil As String 'filnavn + filendelse
Private Sub cmdÅbenFilDialogboks_Click() Dim filsti As String 'filens sti som en tekst variabel Dim antaltegnifilsti As Integer 'antal tegn i filstien Dim t As Integer 'tællevariabel i for..next løkken Dim højretegn As Variant 'filstien talt op med 1, bagfra! Dim venstretegn As Variant 'tjekker om det venstre tegn er \ Dim antaltegn As Integer 'antal tegn i den isolerede fil 'selve filnavnet + filendelsen!!
'initialiser antaltegn antaltegn = 0
Flt = "Excel mappe(*.xls),*.xls," Titel = "Find en eller anden fil" filsti = Application.GetOpenFilename(Flt, 1, Titel)
If filsti = "" Then Exit Sub
'tæl antal tegn i filstien antaltegnifilsti = Len(filsti)
'løb antallet af tegn i filstien igennem For t = 1 To antaltegnifilsti
'set venstretegn = det venstre tegn i den aktuelle 'højretegn´s sti venstretegn = Left(højretegn, 1)
'tjek det venstre tegn 'hvis venstretegn = "\" ... så har vi den isolerede 'fil (filnavn + filendelse) If venstretegn = "\" Then
'set fil = det isolerede filnavn + filendelse, 'talt op bagfra ved hjælp af løkken fil = Right(højretegn, antaltegn)
'forlad løkken Exit For
Else
'antal tegn talt op bagfra i løkken antaltegn = antaltegn + 1
End If
Next
'åben den valgte fil, som ligger for enden af filstien Workbooks.Open filsti
End Sub
Private Sub cmdLukWorkbook2_Click()
'den isolerede fil, som blev skrevet under åbningen af workbook(2), er med som argument Workbooks(fil).Close SaveChanges:=False
End Sub
Det virker på hvilken som helst "workbook(2)" hos undertegnede. Om der er en nemmere måde til at lukke en enkelt workbook på, aner jeg ikke ? ... men jeg vil gerne høre/lære det :o)
Mange tak for forslagene. Begge virker som I beskriver.
I første omgang faldt jeg for Kabbak's forslag, men jeg er efter nærmere omtanke gået væk fra den igen, idet jeg jo ikke kan vide om "brugeren" af værktøjet "Workbook(1) har andre Excelfiler åbne end lige de to jeg koncentrerer mig. Men tak for budet.
Din løsning virker fin Nicolai og da jeg i forvejen "streng" manipulerer med WorkBook(2)'s Excelnavn. (bruger en del af navnet som overskrift i den rapport der genereres i Workbook(1) - så lå den lige til højre benet. Sender du et svar - så jeg kan give dig pointene.
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.