누구든지 다음 요구 사항을 만족시킬 수 있습니까?Excel에서 실행중인 CMD 행 목록
요구 사항 A :
내가 CMD에서 명령 문자열의 목록을 실행하는 루프를 만들고 싶습니다 한 열 C.에서 아닌 값 거기에 나는 내가를 정의 할 필요가 있다고 생각 첫 번째 줄의 변수 i는 항상 동일하므로 Shell()을 실행하여 i
열 F.의 해당 셀에서 명령 문자열을 가져옵니다. Cells(i, "C")
이 비어 있지 않은 경우 계속 i
을 1 씩 늘립니다.
요구 사항 B :
또한이 매크로를 링크하여 선택한 디렉토리의 모든 파일을 나열하는 이전 매크로에 의해 셀에 보관 된 디렉토리에서 작업하고 싶습니다.
이 내가 어떤 루프없이, 무엇을 가지고..
Sub Run_Renaming()
Dim CommandString As Long
Dim i As Integer
i = 5
'Other steps:
'1 - need to pick up variable (directory of files listed, taken from first macro
'when doing manually, I opened command, went to correct directory, then pasted
'the commands. I'm trying to handle pasting the commands. I'm not sure if I need
'something to open CMD from VBA, then run through the below loop, or add opening
'CMD and going to the directory in each iteration of the below loop...
'2 - Need to say - Loop below text if Worksheets("Batch Rename of Files").Cells(i, "C").Value is no blank
CommandString = Worksheets("Batch Rename of Files").Cells(i, "F").Value
Call Shell("cmd.exe /S /K" & CommandString, vbNormalFocus)
'Other steps:
'3 - need to increase i by 1
'4 - need to check if C column is blank or not
'5 - need to end of C column is blank
End Sub
배경 :
내가 친구를위한 도구의 이름을 변경 파일을 만드는거야. 그들은 Excel을 사용할 수 있지만 프로그래밍 언어 나 명령 프롬프트는 사용할 수 없습니다. 이 때문에 나는 배치 파일을 만드는 것 같이 here을 제안하는 것과 같은 조치를 취하지 않으려 고합니다. 그것은 내 친구를 복잡하게 만듭니다.
내가 가진 엑셀 파일을 만들었습니다
Tab 1
- 새 파일 이름 목록을 생성하는 템플릿 시트를. 여러 셀을 연결하고, 파일 형식을 추가하고, 셀 범위에 출력함으로써 작동합니다. 탭이 범위에 두 개의 링크 CMD
Tab 2
만들기 -
Button 1
- 아래 Sub rename()
합니다. VBA는
F 열이 A1_B1_C1.xlsx "탭 1 예 르네"파일 1 "입력"
에 따라 파일 B로 파일 A의 이름을 변경하는 명령 줄을 생성 열 C에서 선택한 디렉토리에있는 파일을 나열하려면 Button 2
은 - 버튼 1에서 선택한 디렉토리를 선택합니다 모든 이름 변경 명령 문자열을 통해 실행 이름 바꾸기 매크로 (요구 사항 1 위 2)을 의미하는 동안 해당 디렉토리
Sub rename()
Dim xRow As Long
Dim xDirect$, xFname$, InitialFoldr$
InitialFoldr$ = "C:\"
Worksheets("Batch Rename of Files").Activate
Worksheets("Batch Rename of Files").Range("C4").Activate
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = Application.DefaultFilePath & "\"
.Title = "Please select a folder to list Files from"
.InitialFileName = InitialFoldr$
.Show
If .SelectedItems.Count <> 0 Then
xDirect$ = .SelectedItems(1) & "\"
xFname$ = Dir(xDirect$, 7)
Do While xFname$ <> ""
ActiveCell.Offset(xRow) = xFname$
xRow = xRow + 1
xFname$ = Dir
Loop
End If
End With
End Sub
끝에 추가 버튼이 세 번째로 필요합니다. 요구 사항 B는 폴더 경로를 선택하여 CMD를 쉘 명령에 전달하기 전에 CMD와 연결하려고하는 것처럼 들릴 수 있습니까? 이름 바꾸기 절차의 인수로 받아 들여지는 입력 상자 (폴더 서브 루틴에서 반복되는 파일에서 사용자가 선택한 폴더를 수집 함)의 결과를 보관하는 변수가 필요하다고 생각하십시오. 또한 쉘 스크립트에서 Command를 지정할 때 CMD를 의미합니까? 그렇다면 일관된 이름을 사용하여 구체적이고 모호하지 않은 용어로 만드십시오. commandText. – QHarr
startRow는 상수입니까? 항상 상수입니까? 적어도 디렉토리의 파일을 나열하는 하위의 서명을 확인해야합니다. 열 F 텍스트의 예는 일부 데이터의 이미지처럼 도움이됩니다. 그리고 사용자가 폴더를 선택할 수있는 버튼 푸시에 의해 호출되는 하위 코드. – QHarr
의견 QHarr 주셔서 감사합니다, 최대한 많이 업데이트하려고했습니다. –