2014-02-26 1 views
0

이 코드를 완전히 바꿀 수 있습니다. 원본 링크는 코드 자체에 있습니다. 더 쉬운 방법이 있고 실제 이름 바꾸기 부분은 내 코드가 아니므로 다시 표시하여 표절하지 않습니다. 배치 파일 이름 변경 프로그램을 사용하여 수행 할 수 없습니다. 나는 법적으로 곤경에서 벗어나기 위해 그것을 스스로 만들 필요가있다 : 회색 지역 없음!VBA 변경 프로그램의 0 반환을 어떻게 수정합니까?

어쨌든, 수십 번의 시도를 혼자서 마침내 내가 지정한 파일의 이름을 바꾸기로되어있는 온라인 코드를 마침내 움켜 잡았습니다. 내 매개 변수와 변수/디렉토리를 할당하기 위해 그것을 편집했습니다. 그러나 나는 그것을 실행할 때 항상 0의 리턴 값을 얻고 파일의 이름이 변경되지 않습니다. 내가 생각할 수있는 한가지는이 디렉토리가 마지막 "\"뒤에있는 부분 대신 폴더의 전체 경로 이름으로가는 것입니다. 그러나이 문제를 해결하는 방법을 잘 모르겠습니다. 문자열의 마지막 8자를 말하면되지만, 문자열 길이는 한 문자에서 20 자 정도까지 다양하기 때문에 작동하지 않을 것입니다. 여기

내 코드입니다 :

Private Sub Apply_Click() 
'This will initiate Module 1 to do a batch rename to find and replace all 
'Module 1 will then initiate the resolving links process 

Dim intResponse As Integer 'Alerts user to wait until renaming is complete 
intResponse = MsgBox("Your folders are being updated. Please wait while your files are  renamed and your links are resolved.") 

If intResponse = vbOK Then 'Tests to see if msgbox_click can start a new process 
Dim i As Integer 
Dim from_str As String 
Dim to_str As String 
Dim dir_path As String 


from_str = Old_Name_Display.Text 
to_str = New_Name.Text 

dir_path = New_Name.Text 
If Right$(dir_path, 1) <> "\" Then dir_path = dir_path _ 
    & "\" 

Old_Name_Display = dir$(dir_path & "*.*", vbNormal) 
Do While Len(Old_Name_Display) > 0 
    ' Rename this file. 
    New_Name = Replace$(Old_Name_Display, from_str, to_str) 
    If New_Name <> Old_Name_Display Then 
Name Old_Name_Display.Text As New_Name.Text 
     i = i + 1 
    End If 

    ' Get the next file. 
    Old_Name_Display = dir$() 
Loop 

MsgBox "Renamed " & Format$(i) & " files. Resolving links now." 
If intResponse = vbOK Then 
MsgBox "You selected okay. Good luck coding THIS." 'Filler line to test that next step  will be ready to initialize 
Else: End 
End If 

Exit Sub 


'Most of batch renaming process used from VB Helper, sponsored by Rocky Mountain Computer Consulting, Inc. Copyright 1997-2010; original code available at http://www.vb-helper.com/howto_rename_files.html 


End Sub 

사람이 내가 0 수익을 얻을 이유에 또 다른 이론을 가지고 있습니까/방법 문제 이상이 잠재적 인 문제를 해결하기 위해?

+0

P.S.에 모듈 1의 코멘트를 무시하십시오. 나는 모듈 자체가 문제를 일으키기 때문에 형태 자체로 그것을하기로 결정했다. – meer2kat

+1

정확히 무엇을하려고합니까? 코드를 보는 것만으로는 어렵습니다. 이것은 VBA 코드이기 때문에 배치 파일로 태그를 붙여서는 안됩니다. 그것은 확실히 배치에서 할 수 있습니다. 게시물을 수정하고 구체적으로 무엇을하려고하는지 알려 주시면보다 나은 답변을 얻으실 수 있습니다. –

+0

지미가 가져 왔습니다. 나중에 참조 할 수 있도록 무엇이라고 부릅니까? 나는 배치 파일 renamer가 할 것 인 같은 일을하고있다. .. 나는 파일을 발견하고, 그룹에서 그들을 개명하고있다. .. 미안, 사람. 나는 기계 공학 학생이 아니라 프로그래머입니다. 나는 직장에서 프로그래밍 프로젝트를하고있다. – meer2kat

답변

1

이름 바꾸기에서 디렉토리가 참조되는 것처럼 보이지 않습니다.

변경

Name Old_Name_Display.Text As New_Name.Text 

Name Dir_Path & Old_Name_Display.Text As Dir_Path & New_Name.Text 
+0

행운을 빌어 요 : ( Old_Name_Display에도 전체 경로가 포함됩니다.이 경우 (더미 프로젝트에 링크) : U : \ Common \ AWeaver \ Project Folder \ 10000 – meer2kat

+0

디렉터리 경로를 설정 한 다음 Old_Name_Display 및 New_Name을 일반 문자열로 다시 설정하거나 그 모든 작업을 망칠 수 있습니까? 그냥 이번 주말에 VB를 시작 했으므로 아무 생각도 할 수 없습니다 – meer2kat

+0

예. 할 수 있습니다. Old_Name_Display는 경로를 디버거에서 설정하고 F8을 사용하여 코드를 단계적으로 실행하면 더 자세한 정보를 얻을 수 있습니다 .Dir $()은 문자열에서 경로를 제거합니다 .. –

관련 문제