Сохранение рабочей книги с именем другой рабочей книги - PullRequest
0 голосов
/ 19 октября 2019

У меня есть файл шаблона в его собственной папке, куда я копирую данные из нескольких периодических файлов из другого каталога. Процесс, который я пытаюсь автоматизировать, состоит в том, чтобы скопировать данные из первого периодического файла в шаблон, сохранить получившийся шаблон, названный им в качестве первого файла источника данных («1» в примере), а затем вернуться к исходному пустому шаблону вЧтобы зациклить процесс с остальными периодическими файлами.

Моя неуклюжая попытка до этого момента была следующей:

Сначала я копирую данные из «1» в «шаблон»:

Workbooks.Open fileName:= _
    "C:\sample\template\template.xlsx"
Workbooks.Open fileName:= _
    "C:\sample\1.xlsx"

Windows("1.xlsx").Activate
Range("A2").Select
Selection.Copy
Windows("template.xlsx").Activate
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Затем я хочу сохранить «шаблон» с добавленными данными как «1.xlsx», но в папке шаблонов.

Windows("1.xlsx").Activate
[[ActiveWorkbook.Name.Copy]]?????
Windows("template.xlsx").Activate
[[Saveas.Paste & ".xlsx"]]?????

Поскольку у меня нет базовых знаний в программировании, кроме записии очистив пару строк макроса, я действительно застрял на шаге «скопировать имя файла и сохранить как вставку». Я предполагаю, что есть более эффективный подход ко всему процессу, но сейчас я просто хочу, чтобы вторая часть работала, если это возможно.

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

Заранее спасибо;)

1 Ответ

1 голос
/ 19 октября 2019

После обнаружения Имя как и FileCopy Я получил весь цикл, работающий для всех файлов в одном каталоге:

Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do While xFileName <> ""
With Workbooks.Open(xFdItem & xFileName)

ActiveWorkbook.Sheets(1).Activate
Range("A2").Select

Workbooks.Open fileName:= _
"C:\sample\template\template.xlsx"

Workbooks("template").Sheets(1).Range("A2").Value2 = _
ActiveWorkbook.Sheets(1).Range("A2").Value2

ActiveWorkbook.Save
ActiveWorkbook.Close

FileCopy "C:\sample\template\template.xlsx", "C:\sample\out\template.xlsx"

Name "C:\sample\out\template.xlsx" As "C:\sample\out\" & 
ActiveWorkbook.Name

ActiveWorkbook.Save
ActiveWorkbook.Close

End With
xFileName = Dir
Loop
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...