nesne gerekli hata vba


0
 Dim FSO As Object
    Dim FromPath As String
    Dim ToPath As String
    Dim objFSO As Object
    Dim objFolder As Object
    Dim objSubFolder As Object
    Dim fil As File

    With Application.FileDialog(msoFileDialogFolderPicker) 'Choosing FromPath
        .Show
        FromPath = .SelectedItems(1) & "\"
    End With

    With Application.FileDialog(msoFileDialogFolderPicker) 'Choosing ToPath
        .Show
        ToPath = .SelectedItems(1) & "\"
    End With


   Set objFSO = CreateObject("Scripting.FileSystemObject")
   Set objFolder = objFSO.GetFolder(FromPath)
   For Each objSubFolder In objFolder.SubFolders
        **Set fils = fsoC.GetFolder(objSubFolder & "\").Files**

        For Each fil In fils
            If LCase(Right(fil.Name, 3)) = "zip" Then
               MsgBox "this is a zip file "
            Else

İşaretlenen satırda nesne gerekli hatası alıyorum ve nedenini anlamıyorum? Biri bana yardım edebilir mi?


objSubFolder bir nesne, ancak bir dizgeye ihtiyacınız var, deneyin fsoC.GetFolder(objSubFolder.PATH & "\").Files
Máté Juhász

teşekkür ederim, ama yardımcı olmadı.
netanel

fils ilan edilmemiş gibi görünüyor, belki yardımı olur ( As Object veya As Files )
Máté Juhász

@RandySchuman Neden sizde VBS olduğunu düşünüyorsunuz?
Máté Juhász

fsoC ilan edilmedi.
DavidPostill

Yanıtlar:


0

fsoC betiğinizde ilan edilmemiş / denenmemiş gibi görünüyor. Belki kullanmak istersin objFSO tekrar ?

Düzenle :

Sub test()
 Dim fils As Object
 Dim fil As Object
 Dim FromPath As String
 Dim ToPath As String
 Dim objFSO As Object
 Dim objFolder As Object
 Dim objSubFolder As Object

 With Application.FileDialog(msoFileDialogFolderPicker) 'Choosing FromPath
     .Show
     FromPath = .SelectedItems(1) & "\"
 End With

 With Application.FileDialog(msoFileDialogFolderPicker) 'Choosing ToPath
     .Show
     ToPath = .SelectedItems(1) & "\"
 End With


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(FromPath)
For Each objSubFolder In objFolder.SubFolders
   Set fils = objFSO.GetFolder(objSubFolder & "\").Files

   For Each fil In fils
      If LCase(Right(fil.Name, 3)) = "zip" Then
         MsgBox "this is a zip file "
      Else
         MsgBox "NOPE"
      End If
    Next
Next
End Sub

Bu kod aşağıdaki klasörle çalışır:

A
-- A.1
---- test.txt
---- test.zip

Teşekkürler, haklı olduğunuz kodun başında bir değişken ayarlamayı unuttum.
netanel

Neden ObjFSO ve FSO ilan ediyorsun ama bunlardan sadece birini kullanıyorsun?
Julian Kuchlbauer

Sadece işaretli satırda kullanılan nesneyi günceller ve eklerim. fils beyanı. Yazarın açık bir kodundan çok bir kopyala / yapıştır örneği idi. Düzenleyeceğim. Teşekkürler !
Kaël
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.