2017-12-06 2 views
-1

"OTIF"[...]라는 열린 파일을 매크로가 검색하도록합니다. 매크로가 통합 문서를 찾으면 파일 이름을 다른 통합 문서 (wb2)의 "sheet1"셀 A1에 붙여 넣어야합니다. 여하튼 그것은 작동하지 않는다. 무엇Excel VBA - 다른 이름으로 통합 문서 이름 복사

Sub Filename() 

Dim Wb1 As Workbook, wb2 As Workbook, wB As Workbook 

For Each wB In Application.Workbooks 
    If Left(wB.Name, 4) = "OTIF" Then 
     Set Wb1 = wB 
     Exit For 
    End If 
Next 

If Not Wb1 Is Nothing Then 
    Set wb2 = ThisWorkbook 
End If 

With wb2.Sheets("AAA") 
    .Range("A1").Value = Dir(Wb1.FullName) 
End With 

Application.ScreenUpdating = True 
Application.Calculation = xlCalculationAutomatic 

MsgBox "DONE!" 

End Sub 
+0

디버그 모드와 'wB.Name'값을 사용해 주실 수 있습니까? 통합 문서 이름에도 확장명이 포함되어 있다고 생각합니다. 감사합니다 –

+0

@Bluesector 나는이 코드에 아무런 오류가 없음을 확인했습니다 – Ashok

답변

0

나는 코드를 보았고, 그것은 아래와 같이 단순화 할 수있다.

Sub Filename() 
Dim wB As Workbook 
For Each wB In Application.Workbooks 
    If Left(wB.Name, 4) = "OTIF" Then 
     ThisWorkbook.Sheets("AAA").Range("A1").Value = wB.FullName 
     Exit For 
    End If 
Next 
Application.ScreenUpdating = True 
Application.Calculation = xlCalculationAutomatic 
MsgBox "DONE!" 
End Sub 
+0

A1 :-( – Bluesector

+0

에 파일 이름이 없습니다. @Bluesector AAA 시트, 셀 A1을 확인 했습니까? 이제 인형을 사용하여이 코드를 테스트했습니다. –

+0

매크로는 "AAA"시트와 동일한 파일에 저장됩니다. "OTIF"파일이 열려 있습니다. A1에는 여전히 아무것도 표시되지 않습니다. – Bluesector

0

당신은 문제의 원인

Dir(Wb1.FullName) 

달성하고자합니다. 그냥 Dir()과 그 실행을 삭제 : .Range("A1").Value = Wb1.FullName

+0

이제 그가 나를 강조하고 있습니다 wb2.Sheets ("AAA") - 제 정신이 들기 시작 :-D – Bluesector

+0

이상한 ^^ 무엇이 오류입니까? 매크로를 시작할 통합 문서에 "AAA"라는 시트가 포함되어 있는지 확인해야합니다. – prextor

+0

런타임 오류 91 : 개체 변수 또는 With 블록 변수가 설정되지 않았습니다. 안타깝게도 통합 문서에 시트가 들어 있습니다. – Bluesector

0

전체 편집 코드 :

Option Explicit 

Sub Filename() 

Dim Wb1 As Workbook, wb2 As Workbook, wB As Workbook 
Dim ws As Worksheet 

Set wb2 = ThisWorkbook 

On Error Resume Next 
Set ws = wb2.Worksheets("AAA") 
On Error GoTo 0 
If ws Is Nothing Then ' make sure "AAA" sheet exists 
    MsgBox "AAA sheet does not exist, or has been renamed", vbCritical 
    Exit Sub 
End If 

For Each wB In Application.Workbooks 
    If Left(wB.Name, 4) = "OTIF" Then 
     ' for DEBUG ONLY 
     ws.Range("A1").Value = wB.Sheets.Count 

     ' 2nd Debug option 
     ws.Range("A1").Value = "Test" 

     ' ws.Range("A1").Value = wB.Name 

     MsgBox "DONE!" 
     Exit For 
    End If 
Next 

End Sub 
+0

런타임 오류 91 : 개체 변수 또는 With 블록 변수가 설정되지 않았습니다. Hm : -/ – Bluesector

+0

@bluesector :'WIth'와'End With'를 제거하십시오. –

+0

"End if"의 위치를 ​​변경해야했습니다. 이제는 더 이상 오류가 발생하지 않습니다. 불행하게도 셀에 파일 이름을 복사하지 않습니다. – Bluesector

관련 문제