Just nu i M3-nätverket
Gå till innehåll

Stäng och spara med namn från cellreferens


MvS

Rekommendera Poster

Hej!

 

Är novis på VBA och har ännu inte hunnit lära mig språket till fullo och söker hjälp med ett makro jag vill skapa i en arbetsbok.

Jag har skapat arbetsboken "Aktiviteter.xlsm" utformad som ett slags formulär med skyddade blad (flikar) samt skrivskydd på hela arbetsboken. Meningen är att originalboken alltid skall kvarstå och att man bara kan göra kopior av ifyllt "formulär" - vanligt skrivskydd m.a.o.! 

  • Finns det en bra VBA-kod som kan döpa kopian automatiskt när den sparas och stängs i den aktuelle användarens namn? Namnet skall användaren fylla i cell C10 på flik (blad) 1, tex "Kalle Karlsson".
  • Makrot skall då med ett knapptryck spara kopian av arbetsboken som "Kalle Karlsson.xlsm" på valfri plats. Som det funkar nu så erbjuds man spara som "Kopia av Aktiviteter.xlsm" och det vill jag ändra på!

Jag har sökt runt men inte hittat något användbart förslag! Finns det någon kunnig och vänlig själ som kan bistå mig med detta?  :)

Länk till kommentar
Dela på andra webbplatser

Du kan om du har en knapp på arbetsboken, en funktion, poppa upp en egen spara-som dialog med det filnamn du önskar.

 

Just denna kod skapar en CSV-fil av ett blad.

fileName = Application.GetSaveAsFilename(path & "Export", "CSV-fil, *.csv", 1, "Export", "Spara")
If fileName <> False Then
       ws.SaveAs fileName, xlCSV
End If

Det är den metod jag rekommenderar.

Fast som sagt, koden ovan sparar ett blad. Vill du spara en kopia av boken

Thisworkbook.SaveCopyAs fileName

fast se till att ha samma filformat på filens ändelse som boken du sparar, annars kommer Windows/Excel klaga på fel format när den öppnas.

Länk till kommentar
Dela på andra webbplatser

Hej "Monshi" och tack för svar!

 

Jag tänkte närmast om det gick att få Excel att automatiskt ange innehållet i en cellreferens (tex C10) som namn åt kopian. Kan inte kommandot Thisworkbook.SaveCopyAs kopplas ihop med informationen från cellen C10 i flik 1 på något sätt så att makrot utför detta? Makrot kan sedan vara kopplat till en knapp på själva arbetsbladet (flik 1)... 

 

//Magnus

Länk till kommentar
Dela på andra webbplatser

Visst kan du hämta filnamnet från en cell.

 

Enklaste formen

fileName = Blad1.Range("C10") &".xlsm"

exempelvis

som du sedan matar SaveCopyAs med.

Länk till kommentar
Dela på andra webbplatser

Hej igen och tack för snabbt svar!

 

Har lagt in koden:

 

Sub Stang()
ThisWorkbook.SaveCopyAs Filename = Instruktion.Range("C10") & ".xlsm"
End Sub

 

Jag har bytt namnet "Blad1" mot "Instruktion" som fliken numer heter. När jag försöker köra makrot får jag följande felsvar:

post-61415-0-85576300-1386599566.png

 

Vad kan detta bero på? (Som jag ser det är ju objektet definierat...)

 

//Magnus

Länk till kommentar
Dela på andra webbplatser

Om du ska tilldela "variabel" i anrop till funktion används :=

Men det räcker med

ThisWorkbook.SaveCopyAs Instruktion.Range("C10") & ".xlsm"

 

Kontrollera bara att det står något i C10 innan.

Länk till kommentar
Dela på andra webbplatser

No go!

 

Får samma felsvar! Det verkar som om inte det finns ett "objekt" i satsen...? Syntaxen verkar ju för mig som lekman relativt korrekt men borde inte "Instruktion" på något sätt stå inom citat eftersom det är en relativ sökväg?

//Magnus

Länk till kommentar
Dela på andra webbplatser

Hej igen!

Nej inget händer när jag klickar på knappen! Inte ens felsvar. Jag har f.ö. kollat med alla säkerhetsinställningar och jag tillåter makron mm. så där är det nog inget problem. Funkar din bok på din dator?

 

Grejen är att min Excel-fil skall kunna fyllas i och smidigt kunna sparas på andra datorer som jag inte har åtkomst till varför filen måste vara kompatibel.

 

//Magnus

Länk till kommentar
Dela på andra webbplatser

Du har sparat boken någonstans först? Annars sparas en fil i temp-mappen, det sparas alltså en fil i samma mapp som du har din bok. kanske jag borde varit tydlig om i mitt förra inlägg. Någon dialog om att något sker ska inte dyka upp, allt sker snabbt i bakgrunden.

 

Det ovan helt enkelt en koll om det är något galet med din Excel-installation eller om det var något annat som bråkar. Samt ett exempel på att det kan fungera. Det gäller ju bland annat att det är ett giltigt filnamn i cellen som värdet hämtas från.

Länk till kommentar
Dela på andra webbplatser

Inte ens ett felmeddelande?

 

Denna då, en knapp till och ett meddelande även.

 

Om inte detta fungerar för dig, testa på annan dator om möjligt. 

Bok1.zip

Länk till kommentar
Dela på andra webbplatser

Hej igen!

 

Var nog lite snabb där... :huh:

Det fungerade i din "Bok1.xlsm" men när jag överförde det till min fil så är det inte rätt! Visserligen öppnas dialogrutan "Spara som" men det är helt tomt i filnamnsrutan och i filtypsrutan visas Excel 98 - 2003(.xls)!

Den läser helt enkelt inte av min cell C10 eller följer instruktionen i skriptet i övrigt...  :(

 

//Magnus

Länk till kommentar
Dela på andra webbplatser

Monshi!

 

Hittade felet i min fil! Det var arbetsbladen som blivit omkastade och därför blev det fel referens! Nu fungerar det perfekt!!!

Jag kan bara säga att du med din hjälp gjort min dag! Än en gång stort tack!  :thumbsup:

 

//Magnus

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...