Скопируйте содержимое из одной рабочей книги в другую, вставив как специальный - PullRequest
0 голосов
/ 22 января 2020

Мой текущий код VBA копирует данные с одного листа моего текущего и создает новую книгу с данными из этого листа.

Sub copying_data()

Dim FilePath As String: FilePath = ThisWorkbook.Path & "\"
Dim FName As String


FName = FilePath & "Summary_Output_" & _
        Format(Date, "ddmmmyyyy") & ".xlsx"

ThisWorkbook.Sheets("AA_New").Copy
ActiveWindow.DisplayGridlines = False
ActiveWindow.Zoom = 110
ActiveWindow.Zoom = 120
Set NewBook = ActiveWorkbook
NewBook.SaveAs Filename:=FName

End Sub

В настоящее время это работает нормально, но когда он вставляет данные, на которые он ссылается это к старому листу, вместо этого я хочу вставить данные в качестве значения, но с тем же форматированием, есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 22 января 2020

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

Sub copying_data()

    Dim FilePath As String
    FilePath = ThisWorkbook.Path & "\"

    Dim FName As String
    FName = FilePath & "Summary_Output_" & _
            Format(Date, "ddmmmyyyy") & ".xlsx"

    Dim swb As Workbook
    Set swb = ThisWorkbook

    Dim twb As Workbook
    Set twb = Workbooks.Add

    swb.Worksheets("AA_New").UsedRange.Copy

    With twb.Worksheets(1).Range("A1")
        .PasteSpecial Paste:=xlPasteValues
        .PasteSpecial Paste:=xlPasteFormats
    End With

    twb.Worksheets(1).Name = "AA_New"
    twb.SaveAs Filename:=FName
End Sub
1 голос
/ 22 января 2020

Просто небольшие вариации в ответе Скотта, что совершенно правильно.

  1. Соглашения об именах переменных
  2. Определение имени файла в другой переменной для использования его на других этапах
  3. Windows настроек, которые вы внесли в свой код

Public Sub copying_data()

    Dim newBook As Workbook

    Dim filePath As String
    Dim fileName As String
    Dim fileFullPath As String

    ' Build the path
    filePath = ThisWorkbook.Path & "\"

    fileName = "Summary_Output_" & _
            Format(Date, "ddmmmyyyy") & ".xlsx"

    fileFullPath = filePath & fileName

    ' Add a new workbook
    Set newBook = Workbooks.Add

    ' Save it with the path built
    newBook.SaveAs fileFullPath

    ' Copy the sheet
    ThisWorkbook.Sheets("AA_New").Copy Before:=Workbooks(fileName).Sheets(1)

    ' Copy/paste values
    newBook.Sheets("AA_New").UsedRange.Copy
    newBook.Sheets("AA_New").UsedRange.PasteSpecial xlPasteValues
    newBook.Sheets("AA_New").UsedRange.PasteSpecial xlPasteFormats

    ' Adjust the window
    Windows(fileName).DisplayGridlines = False
    Windows(fileName).Zoom = 110
    Windows(fileName).Zoom = 120

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