• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Automatisch opslaan als op naam van een cel

Status
Niet open voor verdere reacties.

Ben1961

Gebruiker
Lid geworden
21 sep 2008
Berichten
13
Ik gebruik veel excel formulieren waar ik gegevens moet invullen en een ID nummer van een machine of apparaat.
Nu lijkt het me handig om het formulier automatisch te laten opslaan als "naam van een cel".

BV in Cel K3 staat een naam MA10203040, als ik het formulier volledig heb ingevult wil ik het onder die naam opslaan, daar het een uniek nummer is en voor mij een zoekcreteria.

Volgens mij kan dit automatisch.
Iemand enig idee??

mvg Ben
 
Ik heb hier eens een macro voor (laten) maken, door 1 van de excel experts op helpmij.
Beetje verbouwd en enige uitleg:

In je document: extra> macro> Visual basic editor.
Linkerzijde: "This workbook". (dubbelklik)

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

  If ThisWorkbook.Saved = True Then Exit Sub

  If (Sheets("Apparaat").Range("K3") = "") Or (Sheets("Apparaat").Range("K3") = "*") Then GoTo geennummer
    Application.DisplayAlerts = False
    ThisWorkbook.SaveAs Filename:=Sheets("Apparaat").Range("K3").Value
    
    
geennummer:
  ThisWorkbook.Saved = True
End Sub

Dit document kun je na invullen ZONDER OPSLAAN gewoon wegkruisen.
Opslaan gebeurd dan automatisch, zonder dat excel hierover klaagt.

In dit geval vul je code in in cel K3.
Wanneer je het document nu wegkruist, wordt de code in cel K3 gebruikt om je document te saven.
Het tabblad heet "Apparaat". Ook die kun je wijzigen in de code. (standaard heet je blad: "Blad 1".

Stel, je opent dit nieuwe lege document (wat je niet-ingevuld hebt opgeslagen) en wilt helemaal niets invullen, alleen sluiten (wegkruisen).
Type dan een * in K3.
Enter en kruis weg.
Er wordt nu niets opgeslagen.

Om nou niet te kunnen vergeten dat je de code invult, heb ik voor mijn eigen document een popup laten verschijnen, die eerst om de code vraagt.
- Typ een *: er gebeurd niets. Je kunt nu aan je document werken om iets te verbouwen aan de macro's ofzo.
- Typ een apparaat code, vul je form in, en kruis weg.
Document wordt onder de code opgeslagen.

Hier de hele code incl:

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

  If ThisWorkbook.Saved = True Then Exit Sub

  If (Sheets("Apparaat").Range("K3") = "") Or (Sheets("Apparaat").Range("K3") = "*") Then GoTo geennummer
    Application.DisplayAlerts = False
    ThisWorkbook.SaveAs Filename:=Sheets("Apparaat").Range("K3").Value
    
    
geennummer:
  ThisWorkbook.Saved = True
End Sub



Private Sub Workbook_Open()
 
  
  
  With ActiveWorkbook.Sheets("Apparaat")
    While IsEmpty(.Range("K3"))
      .Range("K3").Value = InputBox("Apparaat-nummer invoeren aub.")
    Wend
                      
                      
  If (.Range("K3") = "*") Then Exit Sub
           
  
  End With
End Sub
 
Laatst bewerkt:
LET OP, code zojuist iets gewijzigd !
 
Uhmmm ik werk met 2007:)
hoe kom ik dan visual basic, ben echt een leekje wat dat betreft.
 
Ik werk met 2003. Ik heb geen idee :D
 
Helaas werkt het nog niet.

Wat heb ik gedaan:
ik heb excel geopend en blad1 de naam Apparaat gegeven.
Alt-F11 en in this worksheet de code geknipt en geplakt.
alles opgeslagen als test.

als je test opent krijg je een beveiligingswaarschuwing voor je macro's en met opies deze toestaan.

hierna in veld K3 een willekeurige cijferreeks ingetikt en een enter gegeven.
hierna op het kruisje het blad afgesloten.

dan is het stil, ik kan het blad nergens meer terugvinden op het ingegeven cijferreeks.
krijg ook geen foutmelding.

Let wel ik werk met 2007.
 
En heb je de macro toegestaan?
Klopt, na het kruisje zie je niets verder. Alleen je document hoort opgeslagen te worden.

Krijg je wel de popup met de vraag om de code?
 
Ik ben eerst even zonder popup aan het testen, eigenlijk heb ik geen popup nodig.
Het ID nummer is het eerste wat ik in moet vullen in de sheet.

Maar waar word de sheet opgeslagen dan???
 
Klopt in thisworkbook.

Maar wat bedoel je met een volledige pad hebben.
cel K3 in een cel waar ik in mijn formulier een ID nummer van een apparaat moet invullen en dat is een uniek nummer waar een letter en cijfer in voor kan komen.
en onder dat nummer dient het formulier opgeslagen te worden.

Nu doe ik opslaan als en dan typ ik dat nummer in. dat is het geval.
Nog mooier is dat ik dan direct weer hetzelfde sheet kan invullen met nieuwe gegevens.

Kun je ook een map aangeven waar je de sheet wilt opslaan?

hoe kan ik de sheet als bijlage invoegen, praat wat makkelijker!!
 
In K3 moet bijvoorbeeld staan:

C:\Mijn Excel bestanden\uniekenummer.xls

Aangezien je enkel dat unieke nummer typt in de cel, moet de rest er rond in de code gezet worden. Dat is gewone tekst, dus dat kan in de code gemakkelijk gedaan worden met &
 
Met de popup code werkt het wel de sheet wordt opgeslagen in mijn documenten.
Helemaal top.

Nu nog het opslaan en het formulier met de popup terug laten komen.
 
In K3 moet bijvoorbeeld staan:

C:\Mijn Excel bestanden\uniekenummer.xls

Aangezien je enkel dat unieke nummer typt in de cel, moet de rest er rond in de code gezet worden. Dat is gewone tekst, dus dat kan in de code gemakkelijk gedaan worden met &

Maar bij mij werkt het wel.
Het bestand wordt dan opgeslagen in de map waar ik zojuist het lege orrigineel heb geopend.
En daar zorgt deze regel voor.
Code:
  ThisWorkbook.SaveAs Filename:=Sheets("Apparaat").Range("K3").Value
 
Laatst bewerkt:
Maar bij mij werkt het wel.
Het bestand wordt dan opgeslagen in de map waar ik zojuist het lege orrigineel heb geopend.
En daar zorgt deze regel voor.
Code:
  ThisWorkbook.SaveAs Filename:=Sheets("Apparaat").Range("K3").Value

Inderdaad. Uit de helpfiles:

Saves changes to the workbook in a different file.

expression.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)
expression Required. An expression that returns one of the above objects.

Filename Optional Variant. A string that indicates the name of the file to be saved. You can include a full path; if you don't, Microsoft Excel saves the file in the current folder.
 
Heren,

Ik zal even een nieuwe map maken en daar de file in maken, kijken of dat ook werkt.

Inmiddels al aan het andere probleem nagedacht.
om hetzelfde formulier na opslaan weer automatisch te laten openen met de popup??

Zo kan je lekker snel werken zonder extra handelingen.

vooralsnog dank voor deze oplossing

MVG Ben
 
Ok, ik ben even aan het stoeien geweest.
Ik heb een bestandje meegestuurd.
Je zult even iets in de code moeten aanpassen: dat is de locatie waar je een nieuw leeg form ophaalt.
Staat nu op: ("F:\Microsoft Office 2003\Excel\Test exell HelpMij\ben1961\apparaat nummer leeg.xls")


Ik heb macro's aangepast.
In "This workbook" zet je het volgende:
Code:
Private Sub Workbook_Open()
 
  
  With ActiveWorkbook.Sheets("Apparaat")
    While IsEmpty(.Range("K3"))
      .Range("K3").Value = InputBox("Apparaat-nummer invoeren aub.")
    Wend
  
  If (.Range("K3") = "*") Then Exit Sub
  
  End With
End Sub

In Blad1 "Apparaat" zet je de volgende code:
Code:
Private Sub CommandButton1_Click()
    If (Sheets("Apparaat").Range("K3") = "") Or (Sheets("Apparaat").Range("K3") = "*") Then GoTo geennummer
    Application.DisplayAlerts = False
    ThisWorkbook.SaveAs Filename:=Sheets("Apparaat").Range("K3").Value
       
    Workbooks.Open ("F:\Microsoft Office 2003\Excel\Test exell HelpMij\ben1961\apparaat nummer leeg.xls")
       
geennummer:
  ThisWorkbook.Saved = True
End Sub

Veel plezier.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan