У меня есть папка, в которую нужно внести 29 файлов в 29 листов в шаблоне wb. Всего 31 лист, но мне нужно начать размещать их после листа 2.
Сначала я помещаю соответствующие имена листов в массив:
Dim wbTemplate As Workbook: Set wbTemplate = ThisWorkbook
Dim wsInputs As Worksheet: Set wsInputs = wbTemplate.Worksheets("Inputs")
Dim strDate As String: strDate = InputBox("Please Enter Date of Data (mm/dd/yyyy) : ", Default:=Format(Now, "mm/dd/yyyy"))
Dim strFolderName As String: strFolderName = InputBox("Please Enter Data Folder Date (mm.dd.yy) Include 0's: ", Default:=Format(Now, "mm.dd.yy"))
'place wbTemplate sheet names into an array
With wbTemplate
Dim varWsName, i
Dim ws As Worksheet
ReDim varWsName(1 To Sheets.Count)
For i = 1 To Sheets.Count
Select Case ws.Name
Case "Inputs", "Data --->>>"
Case Else
ws(i) = ThisWorkbook.Sheets(i).Name
End Select
Next
.wsInputs.Range("B1").Value = strDate
.wsInputs.Range("B2").Value = strFolderName
End With
, получая object variable or with block not set
на этом строка: выберите Case ws.Name
, а затем я хочу знать, будет ли эта строка правильно начинать размещение первого файла в папке на листе 1 после оператора case, а затем второй файл будет помещен на лист 2 и пр.:
With wb.Worksheets("Sheet1")
.UsedRange.Copy Destination:=wbTemplate.Worksheets(varWsName(i))
End With
Остальной код:
Option Explicit
Sub Update_Data_And_OPR()
Dim wbTemplate As Workbook: Set wbTemplate = ThisWorkbook
Dim wsInputs As Worksheet: Set wsInputs = wbTemplate.Worksheets("Inputs")
Dim strDate As String: strDate = InputBox("Please Enter Date of Data (mm/dd/yyyy) : ", Default:=Format(Now, "mm/dd/yyyy"))
Dim strFolderName As String: strFolderName = InputBox("Please Enter Data Folder Date (mm.dd.yy) Include 0's: ", Default:=Format(Now, "mm.dd.yy"))
'place wbTemplate sheet names into an array
With wbTemplate
Dim varWsName, i
Dim ws As Worksheet
ReDim varWsName(1 To Sheets.Count)
For i = 1 To Sheets.Count
Select Case ws.Name
Case "Inputs", "Data --->>>"
Case Else
ws(i) = ThisWorkbook.Sheets(i).Name
End Select
Next
.wsInputs.Range("B1").Value = strDate
.wsInputs.Range("B2").Value = strFolderName
End With
'compile all files in folder into wbTemplate
Dim filePath As String: filePath = strFolderName & "*.xlsx"
Dim fileName As String: fileName = Dir(filePath)
Dim wb As Workbook
Dim k As Long
Do While fileName <> ""
Set wb = Workbooks.Open(strFolderName & fileName)
With wb.Worksheets("Sheet1")
.UsedRange.Copy Destination:=wbTemplate.Worksheets(varWsName(i))
End With
wb.Close
fileName = Dir
Loop
End Sub