# Jag behöver hjälp med Excel
Author: Zpookey

Jag har ett dokument som jag har skrivskyddat.  
I dokumentet finns ett fält med namn och ett annat fält med datum.  
Jag vill efter att jag fyllt i alla uppgifterna bara kunna trycka ctrl+s så sparas dokumentet med namnet och datumet som fyllts i. Alternativt räcker det med att den bara tar namnet från t ex B15 och sparar filen som "anders andersson.xls" om jag nu fyllt i Anders Andersson i fältet B15.....någon som fattar hur jag menar?  
Jag vet att det ska gå för jag har sett det hos en kund men eftersom att de haft en konsult där som gjort dokumentet åt dom så vet de inte hur man fixar den inställningen.  
  
Tacksam för svar :)

## Comment 1
Author: johan

Du behöver göra ett enkelt makro. i ThisWorkbook finns event bland annat för ThisWorkbook\_BeforeSave. Fånga detta och sätta själv filnamn där baserat på de öppna cellerna.

Kan göra ett mer konkret exempel om du behöver mer hjälp.

## Comment 2
Author: Zpookey

#1  
  
Ja tack :)

## Comment 3
Author: johan

Det var inte riktigt så enkelt som jag trodde. Excel hamnar i en slags oändlig loop när man kör egen kod för att spara i BeforeSave-händelsen.

## Comment 4
Author: Kaj

Går det inte bara att göra något i typ med

Set Filename = Range("C5").Select eller så

Hittade detta på [denna sida](http://wiki.tcl.tk/11900 "http://wiki.tcl.tk/11900")

\# Save the workbook to a file  
\# 1) The extention '.xls' will automatically be added to the file name.  
\# 2) If the file already exists then a dialog will be displayed.  
\# 3) If 'newExcelFile' is already in use by Excel then a error will be returned.  
set FileName \[file join \[pwd\] newExcelFile\]  
if { \[catch {$workbook SaveAs ${FileName}} errmsg\] } {  
     # not saved  
     puts ${errmsg}  
} else {  
     # ok  
}

## Comment 5
Author: johan

#4: Fast det där är inte VBA.. :)

Det skulle vara lättare om man alltid skulle spara i en speciell mapp.

## Comment 6
Author: AktieTrader

Detta sparar arket i en förvald katalog.

Sub SaveFileAsRangeValue()  
Dim MyName As String   
MyName = Range("B3").Value  
ActiveWorkbook.SaveAs Filename:= "C:\\Documents and Settings\\Användarnamn\\Mina dokument\\" & MyName  
End Sub

Detta medger att man kan byta katalog innan man klickar spara.

Sub SaveFileAsRangeValue()  
  
Dim MyName As String  
MyName = Sheets("Blad1").Range("B3").Value  
  
Dim myPath As Variant  
myPath = Application.GetSaveAsFilename(InitialFilename:=MyName & ".xls")  
' Visar Spararutan utan att spara  
If myPath = False Then Exit Sub  
' Avsluta om man trycker avbryt  
  
ActiveWorkbook.SaveAs Filename:=myPath  
' Spara "på riktigt"  
End Sub

## Comment 7
Author: johan

#6: Yes, men hur gör du för att köra en koden när man sparar på normala sätt? Jag ser två varianter:

1\. Händelsen Workbook\_BeforeSave. Problemet här är att den bli rekursiv varje gång man själv kör Save.

2\. gör en sub för File\_Save som tar över menyvalet och spara-knappen, men jag är osäker på om den snor åt sig kortkommandon och inte heller Spara Som, Spara som Kopia etc.

Men visst, det kanske fungerar...

## Comment 8
Author: Kaj

Jag gjorde på samma sätt. Här sparas filen med värdena från cellerna b3 och c3 när man klickar på ctrl s eller väljer spara eller spara som

Dim filnamn  
Dim b3  
Dim c3  
b3 = Range("b3").Value  
c3 = Range("c3").Value  
filnamn = b3 & " " & c3  
MsgBox filnamn  
ActiveWorkbook.SaveAs (\[filnamn\])

(MsgBox är bara för att visa filnamnet och kan tas bort ur koden när man är säker på att det fungerar)

## Comment 9
Author: Zpookey

Ok...låtsas som om att jag inte fattar ett skit av vad ni skriver...och skriv en ny förklaring tack ;)

## Comment 10
Author: AktieTrader

Behöver vi låtsas? ;-)

Mitt tips ska du använda i ett macro. Men ctrl-s kan du nog inte använda till macrot.

## Comment 11
Author: Kaj

Ja du skall skapa ett macro.

Gå in på verktygsmenyn, välj Macro, skapa nytt.  
Ge ditt macro ett namn.  
När Editorn kommer upp ange följande (ändra cellerna (i mitt fall b3 och c3) och det fasta värdet path till det ställe där du vill spara din fil på din hårddisk t ex "C:\\xxx\\xxx\\) till de värden du vill ha där flen skall sparas till.

Sub Save()  
Dim filnamn  
dim path  
Dim b3  
Dim c3  
path = "kaj\\tjurskit\\"  
b3 = Range("b3").Value  
c3 = Range("c3").Value  
filnamn = path & b3 & " " & c3  
ActiveWorkbook.SaveAs (\[filnamn\])  
End Sub

För att koppla detta macro till **ctrl s  
**Gå in i verktyg igen och välj macro  
Markera ditt macro och välj Alternativ  
Fyll kortkommande Ctrl **s** (eller vilken tangent kommando som helst om du vill använda något annat än just Ctrl **s**)

När du är färdig med ditt excellblad trycker du Ctrl s så sparas dokumentet med det namn du angav i cellerna **b3** och **c3** på det ställe på din hårddisk som du angivit i **path**

## Comment 12
Author: johan

Om man döper Suben till File\_Save så kan man nog även ta över vanliga sparaknappen och Arkiv, Spara.
