【发布时间】:2017-05-31 10:19:52
【问题描述】:
我是创建宏的新手。仅针对特定问题创建了其中的 5 个。
有人可以帮我修改下面的宏吗?我在互联网上找到它,我根据自己的喜好对其进行了修改。但仍有改进的余地。无论如何,除了以下内容外,它都可以正常工作。
文件夹中会有很多文件。每个文件都包含一个名为“PIVOT”的选项卡,格式相同,但数据量不同。
PIVOT 选项卡中的范围是从 A 到 AM 列。它们从第 15 行开始。我只需要那些没有写“关闭”指示的行(状态列在 AJ 列中)。我希望将所有这些行复制到彼此下的主文件中。行数变化很大 - 例如 0 到 200,具体取决于打开的项目。
其次,有人可以告诉我一本书,可以购买,这样我就可以发展我的知识吗? 感谢您的帮助!
提伯尔
子 Import_to_Master() 将 sFolder 变暗为字符串 将 sFile 作为字符串变暗 将 wbD 调暗为工作簿,将 wbS 调暗为工作簿
Application.ScreenUpdating = False
Set wbS = ThisWorkbook
sFolder = wbS.Path & "\"
sFile = Dir(sFolder)
Do While sFile <> ""
If sFile <> wbS.Name Then
Set wbD = Workbooks.Open(sFolder & sFile) 'open the file; add condition to
' >>>>>> Adapt this part
wbD.Sheets("PIVOT").Range("A15:AM26").Copy
wbS.Activate
Sheets("Template").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Application.CutCopyMode = False
' >>>>>>
wbD.Close savechanges:=True 'close without saving
End If
sFile = Dir 'next file
Loop
Application.ScreenUpdating = True
结束子
【问题讨论】:
-
当您拥有 StackOverflow 和互联网的其余部分时,不会担心一本书。您已经使用
Range("A" & Rows.Count).End(xlUp)在您的主文件中找到了最后一行,因此您可以使用上面的代码修改您的Range("A15:AM26")以在您的各个文件中找到最后一行。 -
好的,但是有行,不需要。我只需要那些状态未关闭的。有一个带有 9-10 选项的特定列。其中一个是“封闭的”,但我不在乎。另外,如果我添加 Range("A" & Rows.Count).End(xlUp),它会说超出范围。我认为这是因为源文件从第 14 行开始。感谢您的预订建议 :) 但如果我每天花 15-30 分钟,我会寻找可以每天教我一些东西的东西。