我会尽力解释这一点。希望我在脚本中的笔记能澄清我的胡言乱语。简而言之,此脚本将翻阅历史生产表,将这些表中的选定数据编译为一个。在当前代码中,在识别要粘贴到的下一个空单元格时,我无法让 Replace() 输出正常工作。当我开始浏览工作簿部分时,我试图限制所需的代码更改量。我希望这是有道理的。“复制粘贴需要代码以有限的更改复制过去。我的想法是只需要更改目标列。” 我的技能有限,但我正在学习,所以请随时就方法或设计提供建议和反馈。目前,我很难调试我的 columnCEL 变量在范围选择中的工作方式。我很感激有人能给我的任何有建设性的东西。链接、信息来源等我已经在这个网站和其他网站上浏览了几个小时,但我已经弄清楚了一些事情,但是......
Sub parse()
Dim strPath As String
Dim columnCEL As String
Dim lastrow As Range
'open WB to consolidate too
Workbooks.Open "c:\prodplan\compiled\plancon.xlsx"
Set lastrow = ActiveSheet.UsedRange.End(xlDown).Offset(1, 0)
Set objexcel = CreateObject("Excel.Application")
objexcel.Visible = True
objexcel.DisplayAlerts = False
strPath = "C:\prodplan"
Set objfso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objfso.GetFolder(strPath)
'Loop through objWorkBooks
For Each objfile In objFolder.Files
If objfso.GetExtensionName(objfile.Path) = "xlsx" Then
Set objworkbook = objexcel.Workbooks.Open(objfile.Path)
objworkbook.Worksheets("plan").Select
'start header dates and shifts copy from objworkbook to consolidated WB
objworkbook.Worksheets("plan").Range("b6:p7").Select
Selection.copy
Workbooks("plancon.xlsx").Worksheets("data").Range("B1").Select
lastrow.Select
ActiveCell.PasteSpecial
'start loop for objworkbook name copy to field in plancon corisponding with date/shift and copy/past select row data.
objworkbook.Close False
'Move proccesed folder to new Dir
End If
'remove msgbox after debug
MsgBox "loop stoper remove for final application"
Next
objexcel.Quit
End Sub
"destination WB "Plancon table structure
Date shift day Total sales Inventory Travel
source WB NAME Thurs Night 3429
source WB NAME Fri Day 2735
source WB NAME Fri Night 5294
source WB NAME Sat Day 7672
source WB NAME Sat Night 0
Source structure
Shift: Thurs Fri Fri
Shift: Night Day Night
Date: 40360 40361 40361
Total sales 3429 2735 5294
Inventory 1750.5045 1685.854 3374.3956
Travel
蒂姆,安迪谢谢你的时间。你们俩都是正确的,它应该是偏移量(1,0)。Tim 关于打开目标工作簿时的活动单元格,我已将其设置为“a1”,但出于不需要它的想法而删除了这一点,因为代码会在粘贴到指定列之前将 Lastcell 设置为活动状态,这将对每个粘贴进行硬编码。我试图找到一种方法,每次输入新列进行粘贴时,我都不必更改结束行的名称。我相信安迪的建议会为我简化事情。在搜索其他代码以获取示例和理解时,我没有看到 usedrange”我更新了代码以反映建议。我还添加了源表和目标表的示例。源表包含大约 78 个行标签,它们将以示例格式复制到目标 WB。在一个完美的世界中,选择所有转置粘贴将使我到达那里。不幸的是,垃圾太多,为 87+ WB 手动过滤它并不吸引人。我将不得不循环比较等于复制范围。或者搜索等于源中每一行的复制范围。关于哪个更快/更有效率的任何建议?无论哪种方式,感谢您的帮助/成为一个共鸣板。关于哪个更快/更有效率的任何建议?无论哪种方式,感谢您的帮助/成为一个共鸣板。关于哪个更快/更有效率的任何建议?无论哪种方式,感谢您的帮助/成为一个共鸣板。