VBA在模板工作表和变量工作表之间复制和粘贴
我编辑了这篇文章,表明我已经对此做了一些研究。在“录制宏”会话期间捕获下面的一些代码。我只是不知道如何改变它记录到变量中的工作簿名称。任何帮助是极大的赞赏!VBA在模板工作表和变量工作表之间复制和粘贴
我试图复制和粘贴两个工作表之间的一些数据。一个是模板,将始终具有相同的名称,另一个取决于我打开的模板。我现在的代码一直在抛出一个错误。我目前的代码在下面!任何帮助将不胜感激!我想手动打开随机工作簿存储它的名称在一个变量。然后让宏打开模板文件,在templateFile中创建一个新选项卡(称为neededInfo),切换回手动打开的文件,选择范围(“A1:B4”),然后将其复制到templateFile中的新工作表。让我知道如果有更好的方法!我超级新!
Sub Macro3()
Dim templateFile As Workbook ' template macro workbook; will always have same filename
Dim workingFile As String ' current working CSCC Quote download
Dim workingSheet As Worksheet ' only sheet in CSCC Quote
Dim tempSheet As Worksheet ' created sheet in CSCC Quote to hold temp data
Dim fileName As String
Dim wrkBook As Workbook
Dim nRow As Long
Dim neededInfo As Long
Dim neededRange As Range
Application.ScreenUpdating = False
' Set template file name
Set templateFile = "20161115 SMARTnet Template.xlsx"
Set templateFile = ActiveWorkbook
templateFile.Active
Set tempSheet = Worksheets.Add(after:=ActiveSheet)
tempSheet.Name = "neededInfo"
workingFile = ActiveSheet.Name
Range("A1:B4").Select
Selection.Copy
templateSheet.Activate
Range("A5").Select
ActiveSheet.Paste
workingFile.Activate
End Sub
我的解决方案:
Sub Macro3()
Dim tPlate As Workbook ' template macro
Dim wrkngFile As Workbook ' current working CSCC Quote download
Dim wrkngSheet As Worksheet ' only sheet in CSCC Quote
Dim tSheet As Worksheet ' created sheet in template file to hold temp data
Dim fileName As String
Dim tPath As String, tFile As String ' template path location and template file
Dim nRow As Long
Dim neededInfo As Long
Dim neededRange As Range
Application.ScreenUpdating = False
tPath = "C:\Users\tcoplien\Desktop\SMARTnet\"
tFile = tPath & "20161115 SMARTnet Template.xlsx"
Set wrkngFile = ActiveWorkbook
Range("A1:B4").Select
Selection.Copy
' Open template file and save name as variable
Set tPlate = Workbooks.Open(tFile)
Set tSheet = Worksheets.Add(After:=ActiveSheet)
tSheet.Name = "neededInfo"
tSheet.Range("A5").PasteSpecial xlPasteValues
wrkngFile.Activate
Range("A1").Select
End Sub
您的代码是相当接近,但也有一些问题。首先,不要用其类型作为名称来创建变量。将Dim workBook As Workbook
更改为Dim bk As Workbook
之类的内容。
接下来你有声明Set templateFile = "20161115 SMARTnet Template.xlsx"
。这有效地试图将工作簿设置为字符串。请改为Set templateFile = Workbooks("20161115 SMARTnet Template")
。或者更好的是将其更改为:
Dim tempStr as String
tempStr = "20161115 SMARTnet Template"
Set templatefile = Workbooks(tempStr)
我不是很确定你想用的代码接下来的几行完成的任务。看起来您正在为templatefile
工作簿添加一个新选项卡。而不是激活工作簿,只需使用此Set tempSheet = templatefile.Worksheets.Add(after:=ActiveSheet)
,然后将此新工作表重命名为“neededInfo”。
接下来,您将workingFile
变量设置为活动工作表,在这种情况下将为neededInfo
工作表。我假设这不是你的意图。在添加新工作表之前,您需要定义workingSheet
变量。
新的代码可能是这个样子:
Sub Macro3()
Dim templatefile As Workbook
Dim workingSheet As Worksheet ' only sheet in CSCC Quote
Dim tempSheet As Worksheet ' created sheet in CSCC Quote to hold temp data
Dim tempStr As String
Application.ScreenUpdating = False
' Set template file name
tempStr = "20161115 SMARTnet Template"
Set templatefile = Workbooks(tempStr)
Set workingSheet = ActiveSheet
Set tempSheet = Worksheets.Add(after:=ActiveSheet)
tempSheet.Name = "neededInfo"
workingSheet.Range("A1:B4").Copy
tempSheet.Range("A5").PasteSpecial xlPasteValues
Application.ScreenUpdating = True
End Sub
我想这是你试图完成。如果不是的话,这对你来说应该是一个好的开始。
祝你好运!
非常感谢您的帮助!我有机会再看一眼并找出答案。我会发布我上面提供的解决方案!你的工作也是如此,谢谢! –
*不断抛出错误*什么错误,在哪一行? –
*我想手动打开随机工作簿存储它的名称在一个变量。然后让宏打开模板文件,在templateFile中创建一个新选项卡(称为neededInfo),切换回手动打开的文件,选择范围(“A1:B4”),然后将其复制到templateFile中的新工作表。 *这看起来像是大约5或6个不同的问题,也许是尝试将其分解并解决每个单独的步骤,这样看起来不会太过分。 –
对不起!我想知道错误发生在哪里会很高兴。我现在修好了,但是谢谢你!我相信错误发生在Set templateFile = ActiveWorkbook。当我有机会确认时,我会更新它。 –