2016-09-06 1 views
0

폴더에서 여러 그림을 삽 입합니다. 이 프로그램은 폴더의 맨 위에서 시작하여 내림차순으로 그림을 삽입해야하지만 그렇지 않습니다.폴더에서 여러 그림을 내림차순으로 삽입하십시오.

첫 번째 3-5 장의 그림은 프레젠테이션의 마지막 부분이며 다른 모든 부분은 완벽한 순서입니다. 다음 그들 방법 주문 :

Sub createTransModel() 

    Dim oSlide As Slide 
    Dim oPicture As Shape 
    Dim myFile As String 
    Dim myFolder As String 
    Dim pptLayout As CustomLayout 
    Dim fileName As String 
    Dim rotSlide As Slide 

    Set pptLayout = ActivePresentation.Slides(1).CustomLayout 
    myFolder = GetFolderPath() 
    myFile = Dir(myFolder & "*.png") 

    Do While myFile <> "" 
     Set oSlide = ActivePresentation.Slides.Add(ActivePresentation.Slides.Count + 1, _ 
     ppLayoutBlank) 
     Set oPicture = oSlide.Shapes.AddPicture(myFile, _ 
      msoFalse, msoTrue, 1, 1, _ 
      ActivePresentation.PageSetup.SlideWidth, _ 
      ActivePresentation.PageSetup.SlideHeight) 

     myFile = Dir 
    Loop 

    fileName = inputBox("Please enter the filename") 
    ActivePresentation.SaveAs (fileName & ".pps") 
End Sub 


Public Function GetFolderPath() As String 


    Dim myFile As Object 
    Dim fileSelected As String 
    Dim path As String 
    Dim objPPT As Object 
    Dim i As Integer 
    Dim folderFromPath As String 
    Dim directory As String 

    directory = "M:\tm\public\Conti_Anlage\Voith Proben" 

    Set myFile = Application.FileDialog(msoFileDialogOpen) 
    With myFile 
     .InitialFileName = directory 
     .Title = "Choose File" 
     .AllowMultiSelect = False 
     If .Show <> -1 Then 
     Exit Function 
     End If 
     fileSelected = .SelectedItems(1) 
    End With 


    For i = Len(fileSelected) To 1 Step -1 
     If Mid(fileSelected, i, 1) = "\" Then 
      folderFromPath = Left(fileSelected, i) 
      Exit For 
     End If 
    Next 

    GetFolderPath = folderFromPath 

End Function 
+0

파일 대화 상자에서 사용되는 Windows 탐색기가 스와핑 (너무 많은 해결 방법으로 인해 더 이상 수정할 수없는 오래된 버그)하기 때문에 사용자가 선택한 첫 번째와 마지막 항목이 바뀌었을 수 있습니다. 이 경우 목록의 첫 번째 항목과 마지막 항목을 바꿔 넣기 만하면됩니다. – Christoph

+0

나는 그 버그도 가지고 있었지만, 이미 그것을 고쳤다. 그것의 코드에 게시되지 않았지만. 그 버그는 그 파일과는 독립적 인 것 같습니다. – Christian

+0

아니, 네가 여기 있는게 네 문제가 아니야. 파일을 수동으로 반복하고 파일 대화 상자에서 여러 개를 선택하지 마라. – Christoph

답변

0


1. 주문 문제를 해결하려면 여기에 몇 가지가있다, 당신은 (For Each oFile in oMyFolder.Files 즉 루프 '의 경우'사용) 폴더에있는 모든 파일을 얻을 수 당신은 그들을 (어쩌면 배열로) 원한다. 이제 추가 할 수 있습니다.
2. 'GetFolderPath'기능 : 사용자가 파일을 선택한 다음 선택한 파일의 폴더를 반환하려고합니다. 'Application.FileDialog(msoFileDialogFolderPicker)'을 사용할 수 있습니다. 그러면 사용자에게 폴더를 선택하라는 메시지가 표시됩니다. 이렇게하면 폴더를 추출하는 것에 대해 걱정할 필요가 없습니다. 그래도 선택한 파일의 폴더를 가져 오려면 'File System'개체를보십시오. 이를 사용하여 폴더를 얻을 수 있습니다 (예 : filesystemobject.GetParentFolderName(MyFile))

0

Windows 파일 탐색기 창에 표시되는 파일 순서는 파일 탐색기 설정에 따라 다릅니다. 파일은 이름순, 크기 순서 또는 여러 가지 다른 방법으로 정렬하여 사전 순으로 표시 될 수 있습니다. 이는 파일 탐색기가 수행하는 작업이며 파일이 디스크에 나타나는 실제 순서와 아무 관련이 없습니다.

Dir $은 반복적으로 호출 될 때 디스크에 나타나는 순서대로 파일을 제공합니다. 특정 순서로 원하는 경우 순서대로 폴더를 정렬하거나 디렉터리로 복사해야하는 순서로 복사해야합니다.

관련 문제