質問: vbsについてです。 下記の処理を行いたいのですがどのようなコードとなりますでしょうか。 あるフォルダ内に 1vbsファイルと 2”いちご.xlsx”という名前のエクセル 3”ばなな”という名前を含むエクセル(例:なすばななトマト.xlsx) 4任意の名前のエクセル の4種類がある。 vbsファイルダブルクリック時に 1のエクセル内の”ぶどう”という名前のシートを2のエクセルの一番先頭のシートの前にコピーしたい。
回答: >1vbsファイルと >2”いちご.xlsx”という名前のエクセル >3”ばなな”という名前を含むエクセル(例:なすばななトマト.xlsx) で >1のエクセル内の”ぶどう”という名前のシートを2のエクセルの一番先頭のシートの前にコピーしたい。 はおかしいので、 2のエクセル(”いちご.xlsx”)内の”ぶどう”という名前のシートを3のエクセル(ばなな”を含む)の一番先頭のシートの前にコピーしたい。 の場合です。 逆の場合は >Set swb = xls.Workbooks.Open(folder & "\" & "いちご.xlsx") 'コピー元のブックを開く >Set dwb = xls.Workbooks.Open(file.Path) 'コピー先のブック("ばなな"を含む)を開く を Set swb = xls.Workbooks.Open(file.Path) 'コピー元のブック("ばなな"を含む)を開く Set dwb = xls.Workbooks.Open(folder & "\" & "いちご.xlsx") 'コピー先のブックを開く に変えてみてください。 最後に閉じない場合は >dwb.Close True 'コピー先を保存して閉じる >xls.Quit 'Excel終了 を dwb.save'コピー先を保存 に変えてみてください。 Dim fso Dim folder Dim s Dim file Dim xls Dim swb Dim dwb ' Set fso = CreateObject("Scripting.FileSystemObject") 'FSO folder = fso.getfolder(".").Path 'このVBSのフォルダ名 s = "対象ファイルがありません" 'ファイルが無い場合のメッセージ For Each file In fso.getfolder(folder).Files 'このVBSのフォルダ内のファイルを順に If InStr(file.Name, "ばなな") > 0 Then 'ファイル名に"ばなな"を含む時 Set xls = CreateObject("Excel.Application") 'Excel xls.Visible = True 'Excel表示 Set swb = xls.Workbooks.Open(folder & "\" & "いちご.xlsx") 'コピー元のブックを開く Set dwb = xls.Workbooks.Open(file.Path) 'コピー先のブック("ばなな"を含む)を開く swb.Sheets("ぶどう").Copy dwb.Sheets(1) 'コピー元の"ぶどう"シートをコピー先の最初のシートの前にコピー swb.Close False 'コピー元を保存せずに閉じる dwb.Close True 'コピー先を保存して閉じる xls.Quit 'Excel終了 'dwb.save'コピー先を保存 s = "終了" '終了メッセージ Exit For 'ファイル検索ループを抜ける End If Next MsgBox s '終了メッセージ表示