0

VBAを使用してファイルをあるフォルダーから別のフォルダーに移動する必要があります。

For m = 1 To fnum
    MsgBox " Please Select " & m & "files"
    ffiles(m) = Application.GetOpenFilename
Next m

If Dir(outputfolder) = "" Then
    fso.createfolder (outputfolder)
End If

fso.Movefile ffiles(m), outputfolder  " getting error at this place "

エラーメッセージが表示されます。

Error message id "Runtime error 438 . Object doesnt support this property "
4

2 に答える 2

1

それを行う私のお気に入りの方法。SHFileOperationAPIの使用

Option Explicit

Private Declare Function SHFileOperation Lib "shell32.dll" _
Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Private Const FO_MOVE As Long = &H1
Private Const FOF_SIMPLEPROGRESS As Long = &H100

Private Type SHFILEOPSTRUCT
    hWnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As Long
End Type

Sub Sample()
    Dim fileToOpen As Variant
    Dim outputfolder As String
    Dim i As Long

    outputfolder = "C:\Temp\"

    fileToOpen = Application.GetOpenFilename(MultiSelect:=True)

    If IsArray(fileToOpen) Then
        If Dir(outputfolder) = "" Then MkDir outputfolder

        For i = LBound(fileToOpen) To UBound(fileToOpen)
            Call VBCopyFolder(fileToOpen(i), outputfolder)
        Next i
    Else
          MsgBox "No files were selected."
    End If
End Sub

Private Sub VBCopyFolder(ByRef strSource, ByRef strTarget As String)
    Dim op As SHFILEOPSTRUCT
    With op
        .wFunc = FO_MOVE
        .pTo = strTarget
        .pFrom = strSource
        .fFlags = FOF_SIMPLEPROGRESS
    End With
    '~~> Perform operation
    SHFileOperation op
End Sub
于 2013-01-24T15:24:04.247 に答える