Назовите копию листа значение в ячейке в оригинальном листе - PullRequest
0 голосов
/ 26 декабря 2018

Этот сценарий проходит по пути к файлу и объединяет все рабочие книги в основную рабочую книгу и разбивает каждую рабочую книгу на рабочий лист в основном файле.

У меня есть строка ws.Name = activeworksheet.Range("B1").Value, которая называет листы копией листа первой рабочей книги Sheet1 и называет каждый лист после этого как Sheet1 (2).

enter image description here

Как это можно изменить на значение в ячейке B1 рабочей книги, которое оно объединяет в основную рабочую книгу?

остаток сценария:

Option Explicit

Sub CombineWorkbooks()

    Dim MainWB As Workbook
    Dim sDirPath As String
    Dim sFileName As String
    Dim sFilePath As String
    Dim wb As Workbook
    Dim ws As Worksheet

    sDirPath = "M:\New folder"

    sFileName = Dir(sDirPath & "\*.xlsx")

    Set MainWB = ThisWorkbook

    Do While Len(sFileName) > 0

        sFilePath = sDirPath & "\" & sFileName

        Set wb = Workbooks.Open(Filename:=sFilePath)

        For Each ws In wb.Sheets
            ws.Copy After:=MainWB.Sheets(MainWB.Sheets.Count)    
            ws.Name = activeworksheet.Range("B1").Value
        Next ws

        wb.Close SaveChanges:=False

        sFileName = Dir
    Loop
End Sub  

1 Ответ

0 голосов
/ 26 декабря 2018

после .Copy() метода объекта Sheet, вновь созданный лист становится активным , в то время как ws все еще содержит ссылку на оригинальный лист

так что иди как следует

        For Each ws In wb.Sheets
            ws.Copy After:=MainWB.Sheets(MainWB.Sheets.Count)

            ActiveSheet.Name = ws.Range("B1").Value
        Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...