Avatar billede Lund Novice
29. april 2016 - 11:34 Der er 8 kommentarer og
1 løsning

VBA-hjælp til makro

Jeg har lavet (mest lånt fra andre VBA-hajer) nedenstående makro som gemmer filen som *.xlsm. Jeg vil gerne have den til at hente filnavnet fra celle A5 og A6 på det aktuelle ark jeg står på, når makroen aktiveres (filen består af mange ark):
SÅDAN SER MIN MAKRO UD:
Sub GemFilMedMakro()
'
' GemFilMedMakro Makro
'
Dim varWorkbookName As String
Dim sFileExtension As String

    Application.EnableEvents = False
   
    varWorkbookName = Application.GetSaveAsFilename(InitialFileName:="", _
    filefilter:="Excel-projektmappe med aktive makroer (*.xlsm), *.xlsm)", _
    FilterIndex:=1)

       
    If varWorkbookName <> "False" Then
        sFileExtension = CreateObject("Scripting.FileSystemObject").GetExtensionName(varWorkbookName)
        varWorkbookName = Left(varWorkbookName, Len(varWorkbookName) - Len(sFileExtension)) & "xlsm"
        ActiveWorkbook.SaveAs Filename:=varWorkbookName, FileFormat:=52
    End If
   
    Application.EnableEvents = True


End Sub
Avatar billede natkatten Mester
29. april 2016 - 11:48 #1
Hvorfor skal den hente filnavnet fra to celler?
Er den ene cellen stien, f.eks. C:\temp\ og den anden celle filnavnet eksempel?
Avatar billede Lund Novice
29. april 2016 - 12:04 #2
I den ene Celle "A5" er vejnavn og i den anden celle "A6" er by + postnr.
Jeg er lidt i retningen af:
Range("A5").Value & "," & Range("A6").Value

Men jeg er absolut ingen haj til det her, så ....
Avatar billede natkatten Mester
29. april 2016 - 12:35 #3
En lidt anderledes tilgang:

Sub GemFilMedMakro()

'Alternativ udgave
'Overskriver evt. eksisterende filer med samme navn

Dim ws As Worksheet
Dim sti As String
Dim filnavn As String
Dim filtype As String
Set ws = ActiveSheet
sti = "C:\temp\" 'Ændr til det katalog hvor filerne skal gemmes
filtype = "xlsm" 'Gemmes som makrofil. Kan ændres til f.eks. xlsx
filnavn = ws.Range("A5").Value & ", " & Range("A6").Value & "." & filtype

Application.DisplayAlerts = False

ActiveWorkbook.SaveAs sti & filnavn

Application.DisplayAlerts = True

'Fjern apostroffen i nedenstående hvis regnearket skal lukkes efter at det er gemt
'ActiveWorkbook.Close

End Sub
Avatar billede Lund Novice
29. april 2016 - 12:53 #4
Det virker :-), men jeg vil gerne have boksen op, så jeg selv vælger filplacering - som mig "egen" gjorde. Der kan nemlig ikke være en standard fil placering, da flere skal bruge filen.
Avatar billede natkatten Mester
29. april 2016 - 13:14 #5
Et hurtigt bud:

Sub GemFilMedMakro2()
'
' GemFilMedMakro Makro
'
Dim varWorkbookName As String
Dim sFileExtension As String
Dim ws As Worksheet
Dim filnavn As String
Set ws = ActiveSheet
filnavn = ws.Range("A5").Value & ", " & Range("A6").Value

    Application.EnableEvents = False
   
    varWorkbookName = Application.GetSaveAsFilename(InitialFileName:=filnavn, _
    filefilter:="Excel-projektmappe med aktive makroer (*.xlsm), *.xlsm)", _
    FilterIndex:=1)

       
    If varWorkbookName <> "False" Then
        sFileExtension = CreateObject("Scripting.FileSystemObject").GetExtensionName(varWorkbookName)
        varWorkbookName = Left(varWorkbookName, Len(varWorkbookName) - Len(sFileExtension)) & "xlsm"
        ActiveWorkbook.SaveAs FileName:=varWorkbookName
    End If
   
    Application.EnableEvents = True


End Sub
Avatar billede Lund Novice
29. april 2016 - 13:42 #6
Jeg fik dit seneste forslag til at virke første gang, men nu skrives ikke data fra A5 og A6.
Jeg har blot kopieret din kode i VBA.
Har du nogen fornuftig forklaring på det?
Avatar billede natkatten Mester
29. april 2016 - 13:50 #7
Har du stadig den gamle makro i brug? Navngiv evt. denne sub som GemFilMedMakroOld og ændr navnet på ovenstående til GemFilMedMakro.
Avatar billede Lund Novice
01. maj 2016 - 10:26 #8
Hej Natkatten
Jeg fik det til at virker :-)
Mange tak for hjælpen.
Opret et svar og du får pointene.
Dbh AL
Avatar billede natkatten Mester
01. maj 2016 - 14:51 #9
Et svar
/natkatten
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
Kurser inden for grundlæggende programmering

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