Excel - generatore automatico di fogli di lavoro
- Problema
- Soluzione
- Nota
Problema
Ho una cartella di lavoro con un foglio dei nomi che ha tutte le informazioni che ho bisogno di mettere sul timecard e un foglio principale con il cartellino che il dipendente riempirà. Come posso generare automaticamente un nuovo set di timecard ogni settimana? Ho bisogno di nominare i fogli con il nome dell'impiegato nella scheda in modo che possano trovare la loro carta e inserire tutte le informazioni dal foglio del nome sulla loro carta. Come nuovi nomi vengono aggiunti o cancellati alla lista che sarà in ordine alfabetico, farà la nuova carta con i nomi e genererà le informazioni giuste su ogni carta dalla lista. Come posso fare questo? Sono nuovo a questo e questa è l'ultima cosa che deve essere fatta.
Soluzione
Non ho idea di come sia il tuo nome e modello
Crea una copia di backup del tuo file
Leggi il codice e apporta le modifiche appropriate, ho commentato tutto per te.
- Premere ALT + F11 per aprire vbe
- Fare clic su Inserisci e selezionare modulo
- Copia e incolla il codice sottostante:
Sub generateTimeSheets () Dim sMasterNameSheet As String 'nome del foglio che ha informazioni sui dipendenti Dim sTimeSheetTempate As String' nome del foglio che è un modello di timecard Dim iMaxNameCol As Integer 'il numero di colonna sotto il quale ci sono più file populate Dim lMaxNameRow As Integer Dim sTemp As String 'una variabile temporanea Dim vWarning As Variant' avviso per l'eliminazione '########################################################## ################### PERSONALIZZA QUI PER ADATTARE ALLE TUE ESIGENZE '#################################### ############################ sMasterNameSheet = "Nomi" "questo è il nome del foglio che ha informazioni sui dipendenti sTimeSheetTempate =" Modello scheda attività "'questo è il nome del foglio che è il modello di scheda attività Dim iNameCol As Integer" quale colonna nel foglio informativo dipendente, ha informazioni sul nome (aggiungi altre colonne similari) Dim sEmpName As String' nome del dipendente iMaxNameCol = 1 'questa colonna su foglio dei dipendenti ha il numero massimo di righe riempite in iNameCol = 1 'questa è la colonna dove empl Il nome di oyee è trovato vWarning = MsgBox ("Questo eliminerà tutti i fogli eccetto" _ & sMasterNameSheet & "e" & sTimeSheetTempate _ & ". Premere Sì per confermare ", vbCritical + vbDefaultButton2 + vbYesNo)" non si desidera continuare Se vWarning vbYes Quindi Esci da Sub "per eliminare tutti i fogli tranne i due" si spostano attraverso tutti i fogli nel libro Per ogni foglio di lavoro Nel foglio Fogli esaminati nel loop sTemp = mysheet.Name 'se il foglio esamina non è due foglio critico quindi lo elimina If ((UCase (Trim (sTemp)) UCase (Trim (sMasterNameSheet))) E _ (UCase (Trim (sTemp)) UCase (Trim ( sTimeSheetTempate)))) Then mysheet.Delete End If Next Sheets (sMasterNameSheet) .Seleziona 'trova il numero massimo di righe lMaxNameRow = Celle (65536, iMaxNameCol) .End (xlUp) .Row sTemp = sTimeSheetTempate For lThisRow = 2 A lMaxNameRow sEmpName = Cells (lThisRow, iNameCol) sEmpName = Trim (sEmpName) If (sEmpName "") Then Sheets (sTimeSheetTempate) .Select Sheets (sTimeSheetTempate) .Copy After: = Fogli (sTemp) ActiveSheet.Name = sEmpName sTemp = sEmpName 'qui devi fare le correzioni 'in questa linea di esempio sta dicendo che sul modello appena copiato, nella sua cella A1' metti il valore e trovato nella colonna A dei fogli di fogli dei dipendenti (sEmpName) .Range ("A1") = Fogli (sMasterNameSheet) .Range ("A" e lThisRow) End If nextFor: Next End Sub
- 4. Premere F5 per eseguirlo
Nota
Grazie a rizvisa1 per questo suggerimento sul forum.