サブフォルダでファイル名を検索し、Excelファイルを開き、Wordにコピー/貼り付けしようとしています。私のコードが今のところ、毎回新しいWord文書を開く方法です。各Excelファイルのアイテムを同じWord文書に貼り付けるにはどうすればよいですか?再帰中にWordが複数のドキュメントを開くのを防ぐ方法は?
Sub Word(f)
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add("C:\Users\ntunstall\Desktop\test\Doc1.docx")
objWord.Visible = True
objDoc.PageSetup.Orientation = 1
objDoc.Paragraphs.Alignment = 1
Set objExcel = CreateObject("Excel.Application")
Set objWkb = objExcel.Workbooks.Open(f)
objExcel.Visible = False
objWkb.Sheets("PresRate").ChartObjects("Chart 1").CopyPicture
objWord.Selection.Paste
objWord.Selection.MoveRight
objWord.Selection.TypeParagraph
objWkb.Save
objWkb.Close
End Sub
Dim path: path = "C:\Users\ntunstall\Desktop\test"
Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")
Call TraverseFolders(fso.GetFolder(path))
Sub TraverseFolders(fldr)
Dim f, sf
For Each f In fldr.Files
If InStr(f.Name, "OPS") > 0 Then
If InStr(f.Name, "xlsm") > 0 Then
Call Word(f)
End If
End If
Next
For Each sf In fldr.SubFolders
Call TraverseFolders(sf)
Next
End Sub
wScript.Quit
objWord.Quit
objExcel.Quit
Set objDoc = Nothing
Set objWkb = Nothing
IはIN /サブのうちSub Word(f)
の可動部を試みたが、中/ Sub TraverseFolders(fldr)
のうちました。オブジェクトは有効範囲外になるか、プログラムは複数のワードドキュメントを開きます。
開いているファイルを開く、または開いているファイルに接続する 'GetObject(Fname)'。 'GetObject(、" Word.Application ")は既に実行中のWordに接続するための'(もし存在しなければエラー)。 –