【发布时间】:2014-05-02 14:49:22
【问题描述】:
我有一个包含日期和姓名列表的 Excel 工作簿。工作簿有 500 行。日期在 A 列中,名称在 B 列中。工作簿中所有 500 行的日期相同,每个名称都是唯一的。
我的目标是最终得到一些工作簿,根据它们的名称保存在单独的目录中。每个工作簿都有相同的标题(A 列:日期,B 列:名称),行在 A 列中按日期排列。
我还有其他行数不同但列相同的工作簿。
通读 B 列,检查是否存在具有单元格 B2 值的文件。
如果在单元格 B2 中具有值的文件不存在,请复制行,在单元格 B2 中创建一个名称为值的文件,在第 1 行中具有标题,粘贴行并在新工作表的单元格 B2 中另存为值的名称.
如果单元格 B2 中具有值的文件(例如 David)已存在,则复制整行,打开该文件,将行(包含日期)粘贴到第一个可用的空白行。 (我曾想根据日期值插入行但无法这样做,并将根据标题对数据进行排序)
工作簿新工作簿的创建、复制、粘贴命名和工作正常。
我遇到的问题是程序似乎忽略了第一个 If 语句,导致 excel 给出问题:“名称为 David 的文件存在于此位置,您要覆盖它吗?”
以下是我到目前为止所做的,如果我不够清楚,请告诉我,任何帮助表示衷心感谢:
Option Explicit
Sub CreateNewWorkBook()
Dim ThisPath As String
Dim ActivePath As String
Dim rRange As Range
Dim rCell As Range
Application.ScreenUpdating = False
ThisPath = ThisWorkbook.Path
ActivePath = ActiveWorkbook.Path
Set File1 = ThisWorkbook
Set File2 = ActiveWorkbook
Set rRange = Range("B2", Range("B655365").End(xlUp))
Set rCell = cell.Value
For Each rCell In rRange.Cells
If Dir(ThisPath & "\" & "Names" & "\" & rCell) = "" Then
rCell.EntireRow.Copy
Workbooks.Add
Range("2:2").PasteSpecial xlPasteAll
ActiveWorkbook.SaveAs Filename:=ThisPath & "\" & "Names" & "\" & Range("B2").Value
Range("A1").Value = "Date"
Range("B1").Value = "Name"
ActiveWorkbook.Close SaveChanges:=True
Else: rCell.EntireRow.Copy
Workbooks.Open Filename:=(ThisPath & "\" & "Names" & " \ " & "rCell")
UsedRange.Columns(1).Offset(1, 0).PasteSpecial xlPasteValues
ActiveWorkbook.Close SaveChanges:=True
End If
Next rCell
Exit For
End Sub
【问题讨论】: