【发布时间】:2014-10-09 16:21:11
【问题描述】:
我正在清理 Excel 电子表格中的联系人数据,以便批量上传到 SalesForce。但是,SalesForce 只能管理 100 个联系人长的工作表。例如,我想要一个可以将 700 行工作表拆分为七个工作簿的宏,每个工作簿包含 100 个单元格引用。
我对如何执行此操作进行了一些研究,我相信这是 StackOverflow 上唯一有助于实现此目的的参考: Solution for Dividing WorkSheet into Multiple Files with vba/excel/c#
另外,这个解决方案看起来很有希望,但我对 VBA 的理解还不够,无法掌握它:https://superuser.com/questions/57157/can-i-split-a-spreadsheet-into-multiple-files-based-on-a-column-in-excel-2007
但是,选择的答案并不能真正达到我的目的。有人可以指出我正确的方向/列举执行此操作的命令吗?
这是我目前所拥有的——这似乎产生了正确数量的工作簿。现在我只需要弄清楚如何将 100 行剪切并粘贴到每一行中。
Sub Macro12()
Dim wb As Workbook
Dim p As Double
Dim p_quotient As Double
Application.ScreenUpdating = False
p = ActiveSheet.UsedRange.Rows.Count
p_quotient = p / 100
p_quotient = Application.WorksheetFunction.RoundUp(p_quotient, 0)
For i = 1 To p_quotient
Workbooks.Add
Set wb = ActiveWorkbook
ThisWorkbook.Activate
wb.SaveAs ThisWorkbook.Path & "test" & i
wb.Close
Next i
Application.ScreenUpdating = True
Set wb = Nothing
End Sub
这是我现在使用的代码:
Sub Macro12()
Dim wb As Workbook
Dim ThisSheet As Worksheet
Dim NumOfColumns As Integer
Dim RangeToCopy As Range
Dim WorkbookCounter As Integer
Dim myDate As String
myDate = Format(Date, "yyyy.mm.dd")
Set ThisSheet = ThisWorkbook.ActiveSheet
NumOfColumns = ThisSheet.UsedRange.Columns.Count
WorkbookCounter = 1
For p = 1 To ThisSheet.UsedRange.Rows.Count Step 101
Set wb = Workbooks.Add
Set RangeToCopy = ThisSheet.Range(ThisSheet.Cells(p, 1), ThisSheet.Cells(p + 100, NumOfColumns))
RangeToCopy.Copy wb.Sheets(1).Range("A1")
wb.SaveAs ThisWorkbook.Path & "\Salesforce Lead Conversion " & myDate & " Part " & WorkbookCounter & ".xls"
wb.Close
WorkbookCounter = WorkbookCounter + 1
Next p
Application.ScreenUpdating = True
Set wb = Nothing
End Sub
【问题讨论】:
-
你目前使用的代码是什么?