动态选择工作簿和工作表

时间:2014-01-08 09:43:37

标签: vba excel-vba excel

我必须将 workbook1 中的一个工作表中的特定列复制并粘贴到同一 workbook1 中的另一个工作表,或者它也可能是 workbook2 。我的意思是我想动态选择源工作簿和工作表以及目标工作簿和工作表。我必须能够动态选择我想要复制的列。

我试过这个:

Dim thisWb As Workbook
Dim destWb As String
Dim destSheet As Worksheet, FromSheet As Worksheet
Dim FromBook As String


Set thisWb = ThisWorkbook
Set destSheet = thisWb.ActiveSheet

FromBook = Application.GetOpenFilename
If FromBook = "False" Then Exit Sub

destWb = Application.GetOpenFilename
Workbooks.Open Filename:=destWb
Set FromSheet = destWb.Worksheets("Sheet1")

Set sourcecolumn = Workbooks("FromBook").Worksheets("sheet1").Columns("A")
Set targetcolumn = Workbooks("destWb").Worksheets("sheet2").Columns("B")
sourcecolumn.Copy Destination:=targetcolumn

存在“无效说明符”编译时错误,此行突出显示destwb:  设置FromSheet = destwb.Worksheets(“Sheet1”)

我尝试过使用静态工作簿,工作表,列名等,但它确实有用。

    Dim sourcecolumn As Range, targetcolumn As Range
    Set sourcecolumn = Workbooks("Book1.xlsm").Worksheets("sheet1").Columns("A")
    Set targetcolumn = Workbooks("Book1.xlsm").Worksheets("sheet2").Columns("B")
    sourcecolumn.Copy Destination:=targetcolumn

问题是我想动态选择工作簿,工作表和列...

1 个答案:

答案 0 :(得分:0)

您的变量声明中存在一些类型混淆。在您收到错误的行上,您尝试为Worbook变量分配String对象引用。这不起作用,因为它们是两种不同的数据类型。

这是一个修复。我评论了我改变的界限:

Dim pthFromBook As String
Dim pthDestWb As String ' to store the path of the workbook file
Dim thisWb As Workbook
Dim destWb As Workbook ' to store reference to workbook object
Dim destSheet As Worksheet, FromSheet As Worksheet

Set thisWb = ThisWorkbook
Set destSheet = thisWb.ActiveSheet

pthFromBook = Application.GetOpenFilename
If pthFromBook = "False" Then Exit Sub

pthDestWb = Application.GetOpenFilename ' first get the path
Set destWb = Workbooks.Open(pthDestWb) ' then open the workbook
Set FromSheet = destWb.Worksheets("Sheet1")

最后,我不知道这是不是一个错字,但在上面的最后一行,似乎在From和Dest表/工作簿之间存在一些混淆......

相关问题