Я думаю, что буфер обмена опустошает себя в этом коде.Что я могу сделать? - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь скопировать ячейки из файла A, лист 1 в файл B, лист 1. Файл A уже создан, и я создаю файл B в своем коде:

Sub Save()
    Dim directory, fileName As String
    Dim nbLigneImportCanope As Integer

    Application.ScreenUpdating = False

    '' Path
    directory = "\\path\"

    '' Number of line in file A
    nbLigneImportCanope = 1
        While ThisWorkbook.Worksheets("Kibana").Range("A" & nbLigneImportCanope).Value <> ""
            nbLigneImportCanope = nbLigneImportCanope + 1
        Wend
    nbLigneImportCanope = nbLigneImportCanope - 1

    '' Copy from file A
    ThisWorkbook.Worksheets("Kibana").Range("A1" & ":V" & nbLigneImportCanope).Copy

    '' Creation of file B
    fileName = InputBox("Entrer le nom du fichier :", "Création d'un nouveau fichier...", "KIBANA_01022019")

    If fileName <> "" Then
        Set NewWkbk = Workbooks.Add
        NewWkbk.SaveAs directory & "\" & fileName
    End If

    '' Paste in file B
    ActiveSheet.Paste
End Sub

Но яв конечном итоге с

ошибка 1004 - класс рабочего листа метода вставки не выполнен.

Я проверял и реализовал перед этим бит кода:

'' Creation of file B
fileName = InputBox("Entrer le nom du fichier :", "Création d'un nouveau fichier...", "KIBANA_01022019")

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

У кого-нибудь из вас есть идея?

1 Ответ

0 голосов
/ 01 февраля 2019

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

Кроме того, в вашем коде отсутствует пропуск * else для If fileName <> "", поэтому, когда имя файла не выбрано, вы бы вставили данные в любой активный лист в данный момент.

Ваш код может выглядеть как

'' Creation of file B
fileName = InputBox("Entrer le nom du fichier :", "Création d'un nouveau fichier...", "KIBANA_01022019")

If fileName <> "" Then
    Set NewWkbk = Workbooks.Add
    NewWkbk.SaveAs directory & "\" & fileName
else 
    exit sub ' (or whatever you want to do)
End If

ThisWorkbook.Worksheets("Kibana").Range("A1" & ":V" & nbLigneImportCanope).Copy _
    NewWkbk.WorkSheets(1).Range("A1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...