اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر (معدل)

السلام عليكم - 

محتاج كود بالاكسل - يقوم بنقل ملف بي دي اف الى فولدر وفي داخل الفولدر الملف بي دي اف وكل فولدر يحمل الاسم الموجود في ملف بي دي اف

كما بالملفات المرفقة 

21 A 74044.pdf 21K11967 مرسيدس.pdf تحويل الى ملفات.xlsm

تم تعديل بواسطه sabah19672025
قام بنشر (معدل)

وعليكم السلام ورحمة الله تعالى وبركاته 

أخي @sabah19672025 أعتقد أن طلبك غير واضح نوعا ما 

 يمكن تنفيذ ذلك بعدة طرق حسب طريقة عملك واحتياجك ونحتاج فقط لتحديد الطريقة التي تفضل استخدامها:

  هل اختيار الملفات يدويا أي يتم عرض نافذة لتحديد ملفات PDF التي تريد نقلها (واحد أو أكثر) وسيقوم الكود تلقائيا بـإنشاء مجلد بنفس اسم كل ملف و نقل الملف إلى داخل هذا المجلد

أم البحث داخل مجلد معين بحيث يتم تحديد مجلد يحتوي على الملفات المعنية و البحث داخله تلقائيا عن كل ملفات PDF مع إنشاء مجلد بنفس اسم كل ملف و نقل كل ملف إلى المجلد المناسب دفعة واحدة

عموما إليك عدة إحتمالات يمكن إختيار ما يناسبك منها

Sub test_MovePDF()
    Dim dl As FileDialog, selectedItems As Variant, fso As Object, i As Integer
    Dim xPath As String, xName As String, xFolder As String, newFolder As String

    Set dl = Application.FileDialog(msoFileDialogFilePicker)
    With dl
        .AllowMultiSelect = True
        .Title = "اختر ملفات PDF"
        .Filters.Clear
        .Filters.Add "PDF Files", "*.pdf"
        
        If .Show <> -1 Then
            MsgBox "لم يتم اختيار أي ملفات", vbExclamation
            Exit Sub
        End If
        
        Set fso = CreateObject("Scripting.FileSystemObject")
        For i = 1 To .selectedItems.Count
            xPath = .selectedItems(i)
            xName = fso.GetFileName(xPath)
            xFolder = fso.GetParentFolderName(xPath)
            newFolder = xFolder & "\" & Left(xName, Len(xName) - 4)
            
            If Not fso.FolderExists(newFolder) Then
                fso.CreateFolder newFolder
            End If
            
            Name xPath As newFolder & "\" & xName
        Next i
    End With

    MsgBox "تم نقل الملفات بنجاح", vbInformation
End Sub

'===================================
Sub Move_Selected_PDFs_To_Folders()
    Dim fso As Object, fd As FileDialog
    Dim i As Long
    Dim xPath As String, fileName As String, xFolder As String, newFolder As String
    Dim baseName As String

    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
        .Title = "اختر ملفات PDF المتفرقة"
        .Filters.Clear
        .Filters.Add "PDF Files", "*.pdf"
        .AllowMultiSelect = True

        If .Show <> -1 Then
            MsgBox "لم يتم اختيار أي ملفات", vbExclamation
            Exit Sub
        End If

        Set fso = CreateObject("Scripting.FileSystemObject")
        
        For i = 1 To .selectedItems.Count
            xPath = .selectedItems(i)
            fileName = fso.GetFileName(xPath)
            xFolder = fso.GetParentFolderName(xPath)
            baseName = fso.GetBaseName(fileName)

            newFolder = xFolder & Application.PathSeparator & baseName
            
            If Not fso.FolderExists(newFolder) Then
                fso.CreateFolder newFolder
            End If
           Name xPath As newFolder & Application.PathSeparator & fileName
        Next i
    End With

    MsgBox "تم نقل الملفات بنجاح", vbInformation
End Sub

'=========================================
Sub test_Move_allPDF()
    Dim fso As Object, file As Object, newFolder As String
    Dim xFolder As String, xName As String, xPath As String

    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "اختر المجلد الذي يحتوي على ملفات PDF"
        If .Show <> -1 Then Exit Sub
        xFolder = .selectedItems(1)
    End With

    Set fso = CreateObject("Scripting.FileSystemObject")
    For Each file In fso.GetFolder(xFolder).Files
        If LCase(fso.GetExtensionName(file.Name)) = "pdf" Then
            xName = fso.Getn(file.Name)
            xPath = file.Path
            newFolder = xFolder & Application.PathSeparator & xName
            If Not fso.FolderExists(newFolder) Then
                fso.CreateFolder newFolder
            End If
            Name xPath As newFolder & Application.PathSeparator & file.Name
        End If
    Next file

    MsgBox "تم نقل الملفات بنجاح", vbInformation
End Sub

 

تحويل الى ملفات v2.xlsm

تم تعديل بواسطه محمد هشام.
  • Like 2

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information