我认为剪贴板在此代码中本身为空。我能做什么?

时间:2019-02-01 15:56:00

标签: excel vba excel-2007

我正在尝试将单元格从文件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 :(得分:0)

正如cyboashu在其评论中所写,您仅应在打开新工作簿后进行复制。另外,可以将目标范围作为参数提供给Copy命令。

此外,在您的代码中,您缺少else的{​​{1}}分支,因此,如果未选择文件名,则将数据粘贴到当时处于活动状态的工作表中。

您的代码可能看起来像

If fileName <> ""