0

我会尽力解释这一点。希望我在脚本中的笔记能澄清我的胡言乱语。简而言之,此脚本将翻阅历史生产表,将这些表中的选定数据编译为一个。在当前代码中,在识别要粘贴到的下一个空单元格时,我无法让 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 手动过滤它并不吸引人。我将不得不循环比较等于复制范围。或者搜索等于源中每一行的复制范围。关于哪个更快/更有效率的任何建议?无论哪种方式,感谢您的帮助/成为一个共鸣板。关于哪个更快/更有效率的任何建议?无论哪种方式,感谢您的帮助/成为一个共鸣板。关于哪个更快/更有效率的任何建议?无论哪种方式,感谢您的帮助/成为一个共鸣板。

4

1 回答 1

1

做了更多的寻找.. 在一个 MS 开发人员的关节中发现了这个,离搜索排名的顶部还很远。无论哪种方式都成功了。

   Dim MyColumn As String
        Dim Here As String
        Here = ActiveCell.Address
                 MyColumn = Mid(Here, InStr(Here, "$") + 1, InStr(2, Here, "$") - 2)
lastrow = ActiveWorkbook.ActiveSheet.Range(MyColumn & "65536").End(xlUp).Offset(1, 0)
于 2012-06-20T18:23:13.347 回答