【发布时间】:2019-11-25 18:28:40
【问题描述】:
我为我们收到的 .csv 文件中的 pil 信息创建了一个数据库。然后,我设置了一个表格,使用匹配和索引公式在我们发送的漂亮表格中显示所有数据。我正在尝试在 VBA 中使用 For Each 来更轻松地导出这些表。当前代码是
Sub ExportAllSheets()
Dim DB As Workbook
Dim OSR As Worksheet
Dim EL As Worksheet
Dim SN As Range
Dim List As Range
Dim Name As Range
Dim x As String
Set DB = Workbooks("Database")
Set OSR = DB.Sheets("OilSamplingResults")
Set EL = DB.Sheets("ExportList")
Set List = EL.Range("A2:A100")
Set Name = EL.Range("B2:B100")
x = InputBox("Enter File Name")
ScreenUpdating = False
For Each SN In List
EL.Range("A2").Copy OSR.Range("G5")
OSR.Copy After:=OSR
Sheets("OilSamplingResults (2)").Range("A1:BN45").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("OilSamplingResults (2)").Move After:=Workbooks(x).Sheets("Master")
Workbooks(x).Sheets("OilSamplingResults (2)").Name = Workbooks("Database").Sheets("ExportList").Range("B2")
Workbooks("Database").Sheets("ExportList").Activate
ScreenUpdating = True
Next
End Sub
工作簿数据库有我要导出的结果页面和一个 ExportList 页面。 A 列是在结果页面上驱动我的匹配公式的序列号。复制序列并将其粘贴到 G5 中,G5 检索所有数据,复制结果页面,并通过仅将值复制回来“展平”它。将新展平的工作表移动到导出文件并根据 ExportPage 列 B 的值对其进行重命名。
我目前的工作是什么,但由于我在循环中硬设置了 A2 和 B2,它给了我一个“该名称已被占用”错误。我不知道如何让它使用 A3 和 B3...4.5.6 等等。
我还应该澄清一下,当我导出数字列表时,它们都会转到同一个文件。下次我导出时将使用不同的文件名,但同样是该文件的整个列表。
我看到很多人使用 Dim I 作为 Integer 和 I + 1 和计数函数,只是以前从未这样做过。
【问题讨论】: