Excel VBA - 如果满足某些条件,则将已关闭工作簿中的整行复制并粘贴到我的活动工作簿

时间:2017-03-10 22:29:17

标签: excel vba excel-vba

目前我有一个带有宏的工作簿,该宏从一个文本文件导入有关飞机上未完成工作的活动通知信息的数据,该文件每2小时自动保存到一个位置。每行用于不同的通知,每列中包含通知编号,飞机注册,工作描述,所需完成时间等数据。

然后,单独的宏将数据重新组织为正确的格式。 然后,用户可以在另一列中写下有关通知旁边的工作进度的备注。

最后一个宏然后通过将此文件的副本保存到具有特定名称的文件夹来归档,该文件夹取决于所谓的日期/时间" WORK PLAN hhmm_ddmmyyyy"。

由于并非所有这些通知都在文本文件转储之间的2小时内完成,因此新导入的数据将包含先前文本文件中尚未完全完成的活动通知以及一堆新通知。问题是当用户将新文本文件导入活动工作簿时,所有注释都将丢失。为了手动保存复制和粘贴,从归档文件中仍然处于活动状态的每个通知的备注,我希望宏能够执行此操作。

我需要一个宏,它可以识别第一列中存在于最近存档的工作簿和我的活动工作簿中的任何通知编号,然后从存档的工作簿中复制该行并将其粘贴到具有相同通知的行上活动工作簿中的数字。

1 个答案:

答案 0 :(得分:0)

以下是打开文件的现有版本的一些代码。

确定行和列,并将readonly文件中的数据添加到工作表中的第一个空行。

Sub OpenWB()'You will need to open the workbook as readonly. that way the original one is not busy when the other macro tries to update it.

Dim Your_2_hr_WB As Workbook

Workbooks.Open Filename:="FilePath & name", ReadOnly:=True

Dim Number_of_Rows As Long
Dim Number_of_Columns As Long
Dim This_Num_Rows As Long
Dim This_Num_Cols As Long


For Each Your_2_hr_WB In Workbooks
    If Your_2_hr_WB.Name = "What ever name it is " Then
    Exit For
End If
Next
Number_of_Rows = Your_2_hr_WB.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
Number_of_Columns = Your_2_hr_WB.Sheets(1).Cells(1, Columns.Count).End(xlUp).Column
This_Num_Rows = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row

ThisWorkbook.Sheets(1).Cells(This_Num_Rows + 1, 1).Resize(Number_of_Rows, Number_of_Columns).Value = Your_2_hr_WB.Cells(1, 1).Resize(Number_of_Rows, Number_of_Columns).Value

'You can replace  Your_2_hr_WB.Cells(1, 1) with  Your_2_hr_WB.Cells(2, 1) if you have a header row


End Sub