VBA基于2个参数文件复制粘贴

时间:2016-11-06 09:27:35

标签: vba excel-vba excel

致所有中小企业, 这是我在这里的第一个港口。我正在研究过去几天的vba代码。我的编码不是很好,因此我需要一些专家的帮助来解决这个问题。

我总共有3个excels:,(1)List_Of_Files。 (2)PARAMETER_FILE和(3)源文件。

  1. List_Of_Files包含excel文件路径列(列A)和 相应的标签名称(B栏)
  2. PARAMETER_FILE包含与每个文件/选项卡对应的许多选项卡 来自List_Of_Files excel。每个选项卡都包含源的单元格引用 文件(从哪里复制)和目标文件的单元格引用(粘贴 位置)。
  3. 源文件包含要根据上述内容粘贴的数据范围 源文件,需要为每个源文件创建1个新目标文件。
  4. 我在过去几天正在研究这个问题,并构建了以下代码。但我无法做到以下事情:

    • 搜索文件是否存在以及是否存在然后获取文件名和 相应的标签名称
    • 将文件名和标签名称传递给下一个Sub

    以下是我的代码。请帮我解决这个问题。我在谷歌和这个网站上搜索过,但无法获得任何解决方案。

    Sub Test_File_Exist_FSO_Late_binding()
    
    Dim FSO As Object
    Dim FilePath As String
    
    Set FSO = CreateObject("scripting.filesystemobject")
     FilePath = " "
    
    If FSO.FileExists(FilePath) = False Then
        MsgBox "file doesn't exist"
    Else
        Call COPYCELL
    End If
    End Sub
    
    Sub COPYCELL()    
    Dim wbk As Workbook
    Dim x%
    
    Application.DisplayAlerts = False
    
    strParamFile = "C:\Users\rezaul.hasan\Desktop\Practice\PARAMETER_FILE.xlsx" 'this is the mapping excel
    Workbooks.Open Filename:="C:\Users\rezaul.hasan\Desktop\Practice\PARAMETER_FILE.xlsx"
    Sheets("DIGITAL").Select
    TargetFilename = Range("G2").Value
    SourceFilename = Range("A2").Value
    SourceTabName = Range("B2").Value
    
    Set wbkt = Workbooks.Add
    wbkt.SaveAs Filename:="C:\Users\rezaul.hasan\Desktop\Practice\" & TargetFilename & ".xlsx", FileFormat:=51
    wbkt.Close
    strFirstFile = "C:\Users\rezaul.hasan\Desktop\Practice\" & SourceFilename & ".xlsx" 'Take the source excel
    strSecondFile = "C:\Users\rezaul.hasan\Desktop\Practice\" & TargetFilename & ".xlsx" 'take the target excel
    
    Set wbkM = Workbooks.Open(strParamFile)
    Set sh1 = Sheets("DIGITAL")
    lr = Range("C" & Rows.Count).End(xlUp).Row
    
    For x = 2 To 4
    
    Source = sh1.Range("C" & x).Value
    Target1 = sh1.Range("E" & x).Value
    Target2 = sh1.Range("F" & x).Value
    
    
    Set wbkS = Workbooks.Open(strFirstFile)
    With wbkS.Sheets(SourceTabName)
       .Range(Source).Copy
    End With
    
    
    Set wbk = Workbooks.Open(strSecondFile)
    With wbk.Sheets("Sheet1")
    .Range(Target1, Target2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    
    End With
    
    wbk.Save
    wbk.Close
    wbkS.Close
    
    Next
    
    wbkM.Close
    End Sub
    

0 个答案:

没有答案