2013-08-01 4 views
0

내 조직에는 모든 직원이 자주 작성해야하는 Excel 템플릿이 있습니다. 이 템플릿은 연간 수백/수천 개의 Excel 파일 (통합 문서)을 생성합니다.Excel의 템플릿에서 통합 문서 고유 ID 생성

조직을 위해이 파일 각각에 대해 고유 한 ID (즉,이 템플릿으로 생성 된 통합 문서 당 고유 ID)가 긴급하게 필요합니다. [YYYYMMDD] - - [HHMMSS]

에서

[사용자] :

현재, 내 생각은 통합 문서의 셀에 다음 ID를 생성하는 것입니다

  • user은 사용자가 채울 직원의 사용자 이름을 나타내는 문자열입니다. 그래서 아무런 문제도 없습니다.
  • YYYYMMDD는 연결된
  • hhmmss, 내 엑셀 템플릿이 자동으로 함께 YYYYMMDD-hhmmss 정보 셀을 채우는 것을 필요시, 분이며, 두 번째이 효과

을 연결해 년, 월, 일입니다 정확한 발생 날짜와 시간.

이 정보는 템플릿에서 통합 문서를 생성 한 후에 만들어야하며 이후에는 변경할 수 없습니다. 그래서 이것들은 (보호 된) 셀에있는 값이어야하며 공식 (나는 추측)이 아닙니다.

오랜 시간 동안 검색 한 후이를 수행하는 방법을 알 수 없습니다. 필요 여부는 확실하지 않지만 VBA 마스터가 아닙니다. 비록 내가 프로그래밍에 대한 지식을 가지고 있기는하지만, 저에게 약간의 코드를 던져주십시오.

아무도 도와 줄 수 있습니까?

미리 감사드립니다.

답변

0

날짜/시간 입력란 아이디어가 좋다 ....에서 ThisWorkbook 모듈에 다음 코드를 추가하여이

enter image description here

에 smilar 통합 문서 작성 :

Private Sub Workbook_Open() 
    If [B2] = "" Then 
     ' timestamp 
     [B2] = Now() 

     ' suppress warning when saving macro containing workbook in non-macro format 
     Application.DisplayAlerts = False 

     ' save under calculated name 
     ActiveWorkbook.SaveAs [B1] & "-" & Format([B2], "YYYYMMDD-hhmmss") 

     ' turn on alerts again 
     Application.DisplayAlerts = True 
    End If 
End Sub 

는 그런 다음 [파일을 만들 매크로 사용 서식으로 저장 - New]를 선택하면 매크로가 제거 된 사용자의 이름으로 즉시 저장되어 코드가 다른 시간에 충돌 할 수 없습니다.

사용자 이름은 환경 또는 레지스트리에서 얻을 수 있습니다.

또는 파일 이름이 실제 이름인지 (여전히) 책 nnn 인 지 확인할 수 있습니다. 이는 이전에 저장되지 않았 음을 의미합니다. 이로 인해 통합 문서에 타임 스탬프 셀을 예약 할 필요가 없습니다.

+0

거의 완벽합니다! – flai

0

다음은 ID를 얻기 위해 사용할 수있는 몇 가지 기능입니다. 이 템플릿을 템플릿에 넣으면 워크 시트 나 다른 vba 코드에서 함수를 호출 할 수 있습니다 (예 : 통합 문서에서 '= get_id()'만 입력하면 vba에서 'id = get_id()이 호출 :

명시 적 옵션

(당신 7 월 대신 7 등을 위해 07를 얻을 수 있도록)를 LPAD 함수는 단지 형식에 대한 또한 설정 여기에 뭔가를 추가한다
Public Function lpad(string1, padded_length, _ 
        Optional pad_string = " ") 
    Dim chars 

    chars = padded_length - Len(string1) 
    lpad = WorksheetFunction.Rept(pad_string, chars) & string1 

End Function 

Public Function get_id() 
    Dim user 
    Dim YYYYMMDD 
    Dim hhmmss 

    user = Environ("username") 
    YYYYMMDD = Year(Now()) & lpad(Month(Now()), 2, 0) & lpad(Day(Now()), 2, 0) 
    hhmmss = lpad(Hour(Now()), 2, 0) & lpad(Minute(Now()), 2, 0) & lpad(Second(Now()), 2, 0) 

    get_id = user & "-" & YYYYMMDD & "-" & hhmmss 

End Function 

. 현재 사용자 이름에 대한 Windows 환경 변수를 사용자에게 알려주지 만 대신 사용자를 홍보하려는 경우이 부분을 쉽게 바꿀 수 있습니다.

만약 질문이 있다면.