2017-06-01 95 views
0

我是相当新的VBA和与计算器的指导帮助下,我正在学习。 我试图复制单元格的四个不同范围(本质上是动态的,但都有着相同的行号,但不同的列)(来源图书应当是开放的,用户可以选择在特定顺序的范围内),使得同样可以按照相同的顺序粘贴到目标工作簿。 我无法连接样品源工作簿(在未来会更名)和目标工作簿,因为我在这里是新手。 源本书包含各种山坳一样,slno,ACCT没有,名字,AMT,IFSC,言论,欠款等和无行可能会改变。 目标本书包含了,只有四个colums一样,AMT,ACCT没有,姓名和IFSC以相同的顺序。复制动态范围粘贴到活动工作簿,在尖锐的地方

从源头书,我需要,ACCT,IFSC,名称和AMT山坳数据将在目标工作簿,即,AMT,ACCT没有,名称和IFSC粘贴。

我试图用这个论坛下面的代码...

但是,它只复制柱A至G,而不是动态的。我希望,它可以要求用户输入所有四个范围。

感谢..

Private Sub CommandButton1_Click() 

    Dim excel As excel.Application 
    Dim wb As excel.Workbook 
    Dim sht As excel.Worksheet 
    Dim f As Object 

    Set f = Application.FileDialog(3) 
    f.AllowMultiSelect = False 
    f.Show 

    Set excel = CreateObject("excel.Application") 
    Set wb = excel.Workbooks.Open(f.SelectedItems(1)) 
    Set sht = wb.Worksheets("Sheet1") 

    sht.Activate 

    sht.Columns("A:G").Copy 
    Range("A1").PasteSpecial Paste:=xlPasteValues 

    wb.Close 

End Sub 

回答

0

如果您的代码工作,你可以通过添加Range("A1").PasteSpecial Paste:=xlPasteValueswb.close之间的代码删除不需要的列。

Dim cel As Range 

    With ThisWorkbook.Sheets(1) 
     For Each cel In Intersect(.UsedRange, .[1:1]) 
      If cel.Value2 = "" Or InStr(1, "amtacct nonameifsc", cel.Value2) = 0 Then 
       cel.EntireColumn.Delete 
      End If 
     Next 
    End With 
+0

感谢您的回复..但是,我想保持col完好无损... – santhosh

相关问题