2017-09-17 3 views
0

테이블을 순환하여 알려진 복사본에있는 명명 된 파일을 프로젝트 폴더로 복사하여 현재 수동 프로세스를 자동화하려고합니다. . 복사하고 싶은 부분의 문자열을 가지고 있는데, FileCopy 자체에서 'Object가이 메서드 나 속성을 지원하지 않습니다.'라는 메시지가 나타납니다. 내가 가지고있는 것 :파일 시스템 개체를 사용하여 파일을 복사 할 수 없습니다. WordVBA의 FileCopy 메서드

Sub OEMFileCopy() 

Dim str, oem, oemArray() As String 
Dim folderLetter, folder, oemFolder, company, copyFrom As String 
Dim oTable As Table 
Dim oRow As Row 
Dim myRng As Range 
Dim i As Integer 
Dim fso 

oemFolder = "M:\Technical Support\Project Documentation\O.E.M Tech Literature" 
Set fso = CreateObject("Scripting.FileSystemObject") 


For Each oTable In ActiveDocument.Tables 
    oTable.Cell(1, 1).Select 

    str = Selection.Text 
    str = Left(str, Len(str) - 2) ' << remove end of cell characters 

    ' Test maintenance table 
    If (str Like "Manufacturer") Then 
     For Each oRow In oTable.Rows 

       Set myRng = oTable.Cell(oRow.Index, 3).Range 
       myRng.MoveEnd wdCharacter, -1 
       oem = myRng.Text 

       Set myRng = oTable.Cell(oRow.Index, 1).Range 
       myRng.MoveEnd wdCharacter, -1 
       company = myRng.Text 
       Debug.Print ("Company is " & company) 


       If (Not ((oem Like "*O.E.M*") Or (oem Like "*OEM*") Or (oem Like "*WWW*") Or (oem Like "*www*"))) Then 
        oemArray() = Split(oem, ", ") '<< split into array of OEM filenames 
        For i = LBound(oemArray) To UBound(oemArray) '<< print each oem to output file 
         folderLetter = Left(oemArray(i), 1) 
         folder = ActiveDocument.Path & "\OEM Technical Literature\" & folderLetter & "\" & company 

         copyFrom = oemFolder & "\" & folderLetter & "\" & company & "\" & oemArray(i) & ".pdf" 

         If (fso.FolderExists(folder)) Then 
          folder = folder & "\" 
          fso.FileCopy copyFrom, folder 
         Else 
          fso.CreateFolder (folder) 
         End If 

        Next i 
       End If 




     Next oRow 
    End If 
Next oTable 


End Sub 

나는 copyFrom과 폴더를 인쇄하여 존재하는지 확인했다. 그들은 copyFrom - M : \ Technical Support \ Project 문서 \ O.E.M 기술 자료 \ A \ ABB \ A1285.pdf 폴더 - 폴더 M : \ Technical Support \ Project Documentation \ 2와 같습니다. 진행률 \ 현재 프로젝트 \ 테스트 \ 2에서 작업하십시오. 초안 설명서 \ OEM 기술 자료 \ A \ ABB \

파일이 이미 복사 대상에없고 폴더가 존재합니다.

도움을 주시면 감사하겠습니다. 감사. 당신은 당신의 파일 복사를 혼동

+0

같은 줄에 배수 변수를 정의 할 때 각 변수의 유형을 지정해야한다는 점에 유의하십시오. 귀하의 경우에는'Dim folderLetter, folder, oemFolder, company, copyFrom As String'에서'copyFrom'만이 String입니다. 다른 변수는 Variant입니다. –

+0

감사합니다. 나는 그것이 사실인지 전혀 몰랐다. 하나의 문자열 변수로 이상한 일이 생겨서 두 라인으로 나누었고 그 변수가 왜 고정되어 있는지 궁금해졌습니다. – Madeline

답변

2

명령 :

  • FileCopy가 기본 VBA 언어에서 사용할 수있는 명령 중 하나입니다.

  • CopyFileFileSystemObject 개체에 사용할 수있는 방법 중 하나입니다.

그래서, 대신

fso.FileCopy copyFrom, folder 

사용

fso.CopyFile copyFrom, folder 

를 대신 사용.