-1

Вот моя бред

  1. я нуб с макросами и учусь по необходимости
  2. Этот форум очень помог, но я до сих пор не знаю, как писать сценарии.

Это то, что я пытаюсь сделать ... У меня есть 1 папка ("Ежемесячные отчеты"), которая содержит
«Ежемесячный отчет.xlxs»,
"Feb_01_2017_Daily report.xls",
"Feb_02_2017_Daily report.xls",
"Feb_03_2017_Daily report.xls", т.д.

Каждый ежедневный отчет содержит несколько рабочих листов.

То, что я хотел бы сделать, это скопировать только первый лист из каждого ежедневного отчета и вставить их в Ежемесячный отчет как их собственный рабочий лист с каждым рабочим листом, помеченным как "День 1", "День 2", "День 3", соответственно

Ежемесячная рабочая книга настроена как
Лист 1 - это мой рабочий лист, в котором собраны данные из ежедневных отчетов.
Лист 2 - зарезервирован для данных первого дня
Лист 3 - зарезервирован для данных второго дня
Лист 4 - зарезервирован на день 3
до конца листа 32 для данных дня 31.

Все, что мне нужно, это импортировать лист 1 из "Feb_01_2017_Daily report.xls" в лист 2 "Monthly report.xlxs"
Затем импортируйте лист 1 из файла «Feb_02_2017_Daily report.xls» в лист 3 «Ежемесячный отчет.xlxs»
Затем импортируйте лист 1 из файла «Feb_03_2017_Daily report.xls» на лист 4 «Ежемесячный отчет.xlxs»
весь путь в течение 31 дня.

Я не хочу копировать любые другие листы в ежедневных отчетах - только лист 1

Мой лист 1 из Ежемесячной рабочей книги фильтрует это для подходящего говорит (эта часть работает отлично)


Извините, я должен был быть более конкретным, вот что я сейчас использую ...

Sub CopyWorkbook()

Debug.Print "Started "
'  dimensions variables as type
Dim directory As String, fileName As String, sheet As Worksheet
Debug.Print " completed 
' Turns off screen updating and display alrets
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Debug.Print " Turns off screen updating"

' Initialsizes the variable directory
fileName = "C:\Users\U486474\Documents\00 Monthly from xls\Daily Adjusted Files\DailyReport__2017-01-28_00-00__2017-01-29_00-00  Copy Test .xlsx"       ' actual file to be copied
Debug.Print " Sets file to be copied"

Workbooks.Open (directory & fileName)      ' opens the Excel file
Debug.Print " Opens workbook of file to be copied"

Workbooks(fileName).Worksheets("Daily Report").Copy _
    after:=Workbooks("Monthly Adjusted Reports    Copy macro test.xlsm").Worksheets("Day 1")
Debug.Print " Copies files into existing workbook "

Workbooks(fileName).Close       ' closes the worksheet
Debug.Print " Closes workbook "
' Turn on screen updating and displaying alerts again
Application.ScreenUpdating = True
Application.DisplayAlerts = True


End Sub

Я не могу понять, почему это не копирование файла.

он открывает файл, но не копирует его. Скрипт только для одного файла, сейчас я создам цикл на весь месяц, как только у меня будет 1 рабочий день.

1 ответ1

0

Наконец получил его
Я должен был рассматривать функции копирования и вставки отдельно


Public Sub CopyWorkbook()

Debug.Печать «Начатое копирование на лист - один раз для каждого листа», переменные измерений типа Dim SourceFileName As String 'устанавливает путь к файлу папки

Dim DestFileName As String Dim Range As Range Dim SourceFile As Workbook 'Устанавливает папку исходного файла Dim DestFile As Workbook' Устанавливает файл папки назначения

        ' Initialsizes the variable directory

SourceFileName = FiletoCopy 'Полный путь к файлу, который нужно скопировать. Отладка.Распечатать "Устанавливает файл для копирования" & SourceFileName

Установите SourceFile = Workbooks.Open(SourceFileName) 'открывает файл Excel

             ' copies  the worksheet

Исходный файл.Листы ("Ежедневный отчет").Range ("A1:Z100").Копировать 'Копирует ячейки из исходного листа

Исходный файл.Close SaveChanges:= False 'Закрыть файл Excel

    ' Pastes copied file into worksheet
    Debug.Print " Daysloop = " & DaysLoop
Dim PasteDay As String
PasteDay = "Day " & DaysLoop
PasteDay = WorksheetFunction.Text(DaysLoop, "00")

ActiveSheet.Paste Destination:= Worksheets("Day" & DaysLoop).Range("A1") 'лист для вставки

Debug.Распечатать "Готовая копия на лист - один раз на лист"

End Sub


Это может быть немного неуклюже, но это хорошо работает с циклом, который я сделал, чтобы приспособиться к числу дней.

Однако, у меня есть вопрос. ????

Мне пришлось использовать весь путь в папке, чтобы скопировать из листов. Они расположены в подпапке, где находится лист Excel.

Есть ли способ использовать сокращенный путь в случае перемещения папки? Все ссылки, которые я могу найти в Интернете, показывают полный путь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .