Datorn iFokus

Datorn

Etikettmicrosoft-office
Läst 1026 ggr
Zpookey
0

Jag behöver hjälp med Excel

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 :)

johan
0
#1

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.

Mvh // Johan

Zpookey
0
#2

#1

Ja tack :)

johan
0
#3

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.

Mvh // Johan

Kaj
0
#4

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

# 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
}

johan
0
#5

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

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

Mvh // Johan

AktieTrader
0
#6

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

johan
0
#7

#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…

Mvh // Johan

Kaj
0
#8

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)

Zpookey
0
#9

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

AktieTrader
0
#10

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.

Kaj
0
#11

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

johan
0
#12

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

Mvh // Johan