2013-05-03 5 views
0

현재 특정 셀 (자산 코드 및 일련 번호)에 특정 값만 가질 수있는 여러 매니페스트를 만드는 프로젝트를 진행 중입니다. 내 매니페스트 템플릿이 완성되었으며 사람들 (이 경우 내 엔지니어)이 잘못된 데이터를 입력하는 것을 막기 위해 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 
+0

참고 Book2는 현재 MasterWorkbook이며 Book3에도 위의 코드가 있으며 동일한 sharepoint 디렉터리에도 저장되어 있습니다. –

답변

0

참조 UNC 경로로 SharePoint 문서 라이브러리 (라이브러리에 액세스 할 수는 WebDAV 주소를 사용). 시스템의 WebServices 서비스가 ON으로 설정되어 있는지 확인하십시오. 설정

당신의 FilePath이 같은 문자열과 동일한 변수를

\\[email protected]\DavWWWRoot\personalsite\vsidebottom\Book2\Shared%20Documents

직접 다음 텍스트 파일에 액세스 이런 식으로 설정하려는 경우 :

\\[email protected]\DavWWWRoot\personalsite\vsidebottom\Book2\Shared%20Documents\Test_Text1.txt

자세한 설명은 this blog post을보십시오.

----- 사이드 노트 ---- 빈스; 앞으로 귀하의 질문을보다 간결하게 만드십시오. 그리고 귀하는 더 많은 답변을 얻게 될 것입니다! Check out this FAQ on asking questions 앞으로 도움이 될 것입니다. 누군가가 대답하기를 기다리는 것보다 더 실망하지 않습니다!

관련 문제