2017-09-17 9 views
0

テーブルをループして、既知のコピー内の名前付きファイルをプロジェクトフォルダにコピーして、現在の手動プロセスを自動化しようとしています。私はコピーしたいものの文字列を持っていますが、FileCopy自体で 'オブジェクトはこのメソッドやプロパティをサポートしていません'ということがあります。私が持っているものは:ファイルシステムオブジェクトを使用してファイルをコピーすることはできませんWord VBAの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

ありがとうございます。私はそれが事実であることを知らなかった。 1つの文字列変数で何か変わったことが起こっていて、それを2行に分割して、なぜそれを修正したのか不思議に思っていました。 – Madeline

答えて

2

あなたはあなたのファイルのコピーを混乱されているコマンド:

  • FileCopyは、基礎となるVBA言語で利用可能なコマンドの一つです。

  • CopyFileは、FileSystemObjectオブジェクトで利用可能な方法の1つです。

ので、代わりに

fso.FileCopy copyFrom, folder 

使用

fso.CopyFile copyFrom, folder 

の代わりに使用します。

関連する問題