【发布时间】:2021-01-04 09:12:59
【问题描述】:
我有一个主工作簿 (Consolidate Tracker),我们在其中添加来自源文件的数据。
综合跟踪器和源文件具有三个选项卡(未结头寸、已关闭、已取消)。
每周我都会将源文件(每个选项卡)中的数据放入合并文件(每个选项卡)。
例如:源文件中的未平仓头寸数据转到 Consolidated Tracker 中的未平仓头寸等。
我面临以下问题:
-
我必须提供文件的全名。
例如。Workbooks("Source*")不工作。
有没有办法只给出部分名称?
我的文件名最后会有一个日期。因此我想给*。 -
ActiveWorkbook.Sheets(I)或ActiveWorkbook.Sheets("Name")始终用于打开工作表/选项卡。 -
粘贴输出会出现以下错误。
对象范围的方法 PasteSpecial 失败
-
Selection.EntireRow.Delete有时会出错或有时 不删除并再次进入 For 循环。
另外,循环似乎没有占用下一个标签。
Sub GetSheets()
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("D:\2018\ VBA\Consolidated Tracker.xlsm")
Workbooks("Source_Tracker.xlsx").Activate
For I = 1 To 3
Set Sheet = ActiveWorkbook.Sheets(I)
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
Range("A1").Select
Dim LastRow As Long
LastRow = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
With Range("A1:A" & LastRow)
.Value = Date
.NumberFormat = "mm/dd/yy"
End With
Range("A1").Select
ActiveCell.Offset(1, 0).Select
Selection.CurrentRegion.Copy
Workbooks("Consolidated Tracker").Activate
Set Sheet = Workbooks("Consolidated Tracker.xlsm").Sheets(I)
Range("A100000").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.PasteSpecial
ActiveCell.Offset(0, 0).Select
Selection.EntireRow.Delete
Next I
End Sub
【问题讨论】:
-
您是否有理由需要创建一个新的应用程序实例?顺便说一句,扩展名的必要性可能是由于文件资源管理器设置涉及显示扩展名(又名类型)。
-
问题 2:我真的不喜欢使用“Active Workbook”。您可以考虑使用:Sheet("Sheetname")。 ...