VBAボタンを使用して、別のExcelファイルからいくつかのシートをターゲットファイルにインポートし、他のシートの後に追加したいとします。私はいくつかの点を検討してきましたが、これはソリューションに最も近いものです。しかし、1つの特定の行にどのように記述するかによって、1つの問題が残っています(cf. commentingを参照)。既存のExcelファイルへのExcelシートのインポートを1つのもの以外にする
Private Sub Importer_Click()
Dim directory As String
Dim import As String
Dim curr_file As String
Dim source As Workbook
Dim sheet As Worksheet
Dim total As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
directory = "C:\Users\...\"
import = Dir(directory & "*.xl??")
curr_file = ActiveWorkbook.Name
Do While import <> ""
Set source = Workbooks.Open(directory & import)
For Each sheet In source.Sheets
total = Workbooks(curr_file).Worksheets.Count
sheet.Copy After:=Workbooks(curr_file).Sheets(total)
Next sheet
Workbooks(import).Close ' alternative 1: works smooth, files close, but sheets are not added
Workbooks(directory & import).close ' alternative 2: sheets are added, but importing files remain open (because the 'directory' is not needed in fact) + I get a runtime error 9 (subscript out of range)
import = Dir()
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
回答は単純です(私は比較的VBAに新しいです)。誰が助けることができますか?
ありがとうございます!
おそらく 'source.Close SaveChanges:= True' ...? – Jeeped