현재 특정 셀 (자산 코드 및 일련 번호)에 특정 값만 가질 수있는 여러 매니페스트를 만드는 프로젝트를 진행 중입니다. 내 매니페스트 템플릿이 완성되었으며 사람들 (이 경우 내 엔지니어)이 잘못된 데이터를 입력하는 것을 막기 위해 VBA 코딩이 많이 포함되어 있습니다.참조 또는 셰어에 닫힌 된 Excel 통합 문서에서 다른 Excel 통합 문서로 값 복사
내가 한 일은 VBA 기반의 데이터 검증 규칙과 검사를 사용하는 것입니다. 또한 자산 코드 및 일련 번호가 포함 된 셀은 통합 문서의 두 번째 시트에있는 세 개의 목록과 데이터를 비교하는 DataValidation 규칙에 의해 제어됩니다.
총 100 개의 워크 북에 각각 고유 한 매니페스트가 있으며 100 개 정도의 워크 북에서 Sheet2가 동일합니다. 약 2 개의 워크 시트가 있습니다. 언급 한대로 Sheet2는 세 개의 목록을 가지고 있습니다. - A 열의 가능한 자산 코드 (약 1500 개 항목)
- F 열의 위치에있는 자산 코드 목록 (약 26000 개 항목) - G 열 (약 26000 개 항목)의 위치에있는 일련 번호 목록
모든 매니페스트 통합 문서는 셰어 포인트에 저장되므로 체크 인 및 체크 아웃과 충돌하지 않고 개인이 매니페스트를 편집 할 수 있습니다. 또한 이러한 매니 페스트에 대한 대부분의 액세스는 다소 느린 인터넷을 사용하는 해외 환경에서 작업하는 엔지니어가 수행하므로 파일을 가능한 한 분리하여 작게 유지할 필요가 있습니다. 또한 유효한 자산 데이터가 포함 된 Sheet2에는 인터넷 연결없이 (다운로드 및 오프라인으로 처리되는) 매니페스트가 액세스되는 시간의 대부분으로 활성 링크가 없습니다.
문제는 자산 코드, 자산의 자산 및 일련 번호가 정기적으로 업데이트되고 변경되는 것입니다 (txt/xls 덤프 파일을 출력하는 외부 시스템에서 추적 됨). 새로운 자산이 들어 오면,이 매니페스트 통합 문서의 Sheet2에서 업데이트해야 해당 매니페스트 통합 문서에 새 자산이 잠재적으로있을 수 있습니다.
이 작업을 수행하는 방법은 SharePoint2에만 하나의 추가 MasterWorkbook이있는 것입니다. 내가 원하는 것은 Manifest Workbooks가 MasterWorkbook의 Sheet2와 일치하도록 Sheet2를 업데이트하는 것입니다.
VBA 매크로 버튼 ... 즉 "UPDATE Sheet2"를 사용하여이 작업을 수행 할 계획입니다. 사용자가 인터넷 연결 상태가 좋을 때마다 해당 Manifest를 열 수 있습니다 편집을 위해이 "Update Sheet2"버튼을 클릭하여 모든 올바른 목록을 갖도록하십시오.
매니페스트 통합 문서에서 "업데이트 시트 2"단추를 누르면 Sharepoint에있는 마스터 워크 시트의 Sheet2가 열리지 않고 읽히고 그에 맞게 자동으로 Sheet2가 업데이트됩니다.
Manifest 통합 문서와 MasterWorkbook이 모두 로컬 드라이브에있을 때 코드를 찾을 수 있지만 Sharepoint에서 통합 문서를 참조하는 방법을 찾지 못했습니다.
본질적으로 내가 배운 유일한 VBA 코딩은 지난 몇 주 동안이 포럼을 읽음으로써 이루어졌으며 지금까지는이 내용을 가지고 있지만 지금은 붙어 있습니다. 아래는 내가 생각하고있는 것입니다,하지만 ... 내가 다음 줄에 '잘못된 파일 이름 또는 번호 오류'가 계속 (http://j-walk.com/ss/excel/tips/tip82.htm에서 적응) 작동하지 않습니다 경우 빈 디렉터리 (FilePath를 & 파일 이름) =
내가 잘못 생각한 것을 알려주십시오 ... 분명히 어떤 이유로 주소 참조를 좋아하지 않습니다 ...또한 DAO 방법과 몇 가지 다른 방법을 살펴 보았습니다 ...하지만이 방법이 가장 쉬운 것처럼 보였습니다.이 기능이 작동하는 것이 좋을 것 같습니다 ... 현재 MySite를 사용하여 확인하고 있습니다. 결국 Sharepoint가됩니다. 사이트와 같은 "https://teamspace.slb.com/sites/INMWL/MWL/MH/Shared 문서 /"자신의 모듈에
전체 코드 :
Option Explicit
Sub GetDataDemo()
Dim FilePath$, Row&, Column&, Address$, Address1$
'change constants & FilePath below to suit
'***************************************
Const FileName$ = "Book2.xlsm"
Const SheetName$ = "Sheet1"
Const NumRows& = 1500
Const NumColumns& = 7
Address1 = ActiveWorkbook.Path
Cells(3, 5) = Address1
FilePath = ActiveWorkbook.Path & "/"
'''' tried: https://mysite.slb.com/personalsite/vsidebottom/Book2/Shared Documents
'***************************************
''''
DoEvents
Application.ScreenUpdating = False
If Dir(FilePath & FileName) = Empty Then
MsgBox "The file " & FileName & " was not found", , "File Doesn't Exist"
Exit Sub
Else
MsgBox "File Found!"
End If
For Row = 1 To NumRows
For Column = 1 To NumColumns
Address = Cells(Row, Column).Address
Cells(Row, Column) = GetData(FilePath, FileName, SheetName, Address)
Columns.AutoFit
Next Column
Next Row
ActiveWindow.DisplayZeros = False
End Sub
Private Function GetData(Path, File, Sheet, Address)
Dim Data$
Data = "'" & Path & "[" & File & "]" & Sheet & "'!" & _
Range(Address).Range("A1").Address(, , xlR1C1)
GetData = ExecuteExcel4Macro(Data)
End Function
참고 Book2는 현재 MasterWorkbook이며 Book3에도 위의 코드가 있으며 동일한 sharepoint 디렉터리에도 저장되어 있습니다. –