テーブルをループして、既知のコピー内の名前付きファイルをプロジェクトフォルダにコピーして、現在の手動プロセスを自動化しようとしています。私はコピーしたいものの文字列を持っていますが、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 \
ファイルがコピー先に存在せず、フォルダが存在します。
ご協力いただければ幸いです。ありがとう。
複数の変数を同じ行に定義するときは、各変数の型を指定する必要があることに注意してください。あなたのケースでは、 'Dim folderLetter、folder、oemFolder、company、copyFrom As String'では' copyFrom'だけがStringです。他の変数はVariantです。 –
ありがとうございます。私はそれが事実であることを知らなかった。 1つの文字列変数で何か変わったことが起こっていて、それを2行に分割して、なぜそれを修正したのか不思議に思っていました。 – Madeline