【问题标题】:dynamically selecting workbook and worksheet动态选择工作簿和工作表
【发布时间】:2014-01-08 09:43:37
【问题描述】:

我必须将特定列从 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

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

【问题讨论】:

  • 请展示您的尝试。如果没有看到您的代码,很难说出您到底想要实现什么。
  • 感谢您的回复......让我清楚......我想将工作簿中的工作表中的列复制到其他工作簿中的某个工作表中。所以我想选择工作簿,工作表以及我想动态复制和粘贴的列...任何帮助将不胜感激
  • 好的,你已经尝试过这样做了。有什么具体问题吗?不要强迫我们猜测。
  • 当我运行宏时出现编译时错误,并且 destwb 在“Set FromSheet=destwb.Worksheets("Sheet1") 中突出显示......它说说明符无效
  • 然后写在你的问题中。这次为你做了。

标签: vba excel


【解决方案1】:

您的变量声明中有一些类型混淆。在您收到错误的那一行,您尝试将 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 工作表/工作簿之间似乎有些混淆......

【讨论】:

  • 能否请您提供完整代码..我无法继续进行..工作簿正在打开..那么如何动态选择工作表和列?
  • 这是一个新问题。如果您发现它有用,请使用其左侧的复选标记接受此答案(我认为是,因为它解决了您最初的问题)。然后用这个新问题提出一个新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
  • 2016-12-08
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多