2017-11-10 3 views
0

내 VBA 프로젝트에는 예 : '버전 번호'. 하지만 다른 통합 문서의 시트 중 하나를 참조하고 싶습니다.이 통합 문서는 내 프로젝트에서 작성한 것입니다.'As String'변수로 'As String'변수 채우기

나는이 코드를 가지고 그것은 작동하지만, 동적되지 않습니다 :

Dim ProjectPathName As String 
    Dim ProjectPathNameLength As Integer 
    Dim ProjectFileName As String 
    Dim PosLastBackSlash As Integer 
    Dim RDXX As Workbook 

    ProjectPathName = Application.VBE.ActiveVBProject.FileName 
    ProjectPathNameLength = Len(ProjectPathName) 
    PosLastBackSlash = InStrRev(ProjectPathName, "\") 
    ProjectFileName = Right(ProjectPathName, (ProjectPathNameLength - PosLastBackSlash)) 

    Set RDXX = Workbooks("RDXX 2017-10_2_DEV.xlam")  

이것은 내가 지금까지 시도 무엇을 :

' Set wbDeltaWorks = Workbooks(FileName:=ProjectFileName) 
    ' Set wbDeltaWorks = Workbooks(FileName = ProjectFileName) 
    ' Set wbDeltaWorks = Workbooks(ProjectFileName) 
    ' Set wbDeltaWorks = Workbooks("ProjectFileName") 
    ' Set wbDeltaWorks = Workbooks("" & ProjectFileName & "") 
    ' Set wbDeltaWorks = Workbooks(""" & ProjectFileName & """) 
    ' Set wbDeltaWorks = Workbooks(ProjectFileName.Value) 
    ' Set wbDeltaWorks = Workbooks(1) 
    ' Set wbDeltaWorks = ProjectFileName 

은 날이에 도와 드릴까요?

모든 도움을 많이 받으실 수 있습니다!

+1

'Set wbDeltaWorks = Workbooks (ProjectFileName)'는 이름이 정확하고 확장자를 포함한다고 가정하여 작동해야합니다. – Rory

+0

다음과 같이 좀 더 간단한 방법으로 통합 문서 이름을 얻을 수 있습니다 :'ProjectFileName = Dir (ProjectPathName)' –

답변

1

반복 번호가 프로젝트 이름 끝에 있다고 가정합니다. 현재 반복을 "myProject_1234"라고합니다. 당신은 Windows collection를 통해 열려있는 모든 통합 문서를 통해 루프를 할 수 있고 해당 키워드를 찾아 : 숫자가 끝이 아니거나 당신이 Left function 대신 Instr function을 사용하여 사용하지 않으려면

For Each Window In Application.Windows 

    If Left(Window.Caption, 9) = "myProject" Then 
     Set myWorkbook = Application.Workbooks(Window.Caption) 
     Exit For 
    End If 

Next Window 

, 원칙입니다 똑같다.

+0

나는이 방법이 OK라고 생각하지만 OP는 VBA 프로젝트 이름을 분석하려고합니다. (Window.Caption) .VBProject.Name, 9) = "myProject"Then'. –

+0

@ T.M. - 공정한 포인트 – Absinthe

0

도움을 주셔서 감사합니다. 올바른 길로 나를 잡았습니다! 로리가 말한 것을 위해 갔는데, 그 작업은 이미 "wbDeltaWorks = Workbooks (ProjectFileName) 세트가 올바르게 작동하고 확장명을 포함한다고 가정합니다." 다른 통합 문서가 활성화 된 단계에서 프로세스의 마지막 단계에서만 사용했습니다. 따라서 잘못된 프로젝트 이름이 있습니다.

다시 한 번 감사드립니다.

관련 문제