【发布时间】:2015-12-04 03:12:29
【问题描述】:
好的,所以我有一个问题,我有 5 张工作表(一张是过滤器名称的列表),我需要根据分销商名称进行过滤,并在新工作簿中创建新工作表以分发给他们。所有源工作表数据都来自 SQL DB,我希望能够在每次需要发送报告时运行这个宏。自从我使用 VBA 以来已经有一段时间了,但我使用记录器记录了使用 MS Query 获取基础的步骤,但我错过了如何为所有工作表和分配器组合(总共 36 个)自动执行此操作。这是非常原始的开始
'
' Sort Macro
'
'
Sheets.Add After:=ActiveSheet
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
"ODBC;DSN=CNG_POS;UID=brobbin;Trusted_Connection=Yes;APP=Microsoft Office 2013;WSID=BROBBIN-1Q1Z8;DATABASE=CNG_POS;QueryLog_On=Yes;Mu" _
), Array("ltiSubnetFailover=Yes;")), Destination:=Range("$A$1")).QueryTable
.CommandText = Array( _
"SELECT ""Missing_ORDERS>POS_LOOKUP"".""Fiscal Quarter ID"", ""Missing_ORDERS>POS_LOOKUP"".""ERP End Customer Name"", ""Missing_ORDERS>POS_LOOKUP"".""POS End Customer Master Name"", ""Missing_ORDERS>POS_LOOKUP"".""Da" _
, _
"te Booked"", ""Missing_ORDERS>POS_LOOKUP"".""POS DID"", ""Missing_ORDERS>POS_LOOKUP"".""ERP Deal ID"", ""Missing_ORDERS>POS_LOOKUP"".""Claim Authorization Number"", ""Missing_ORDERS>POS_LOOKUP"".""Sales Order Number " _
, _
"Detail"", ""Missing_ORDERS>POS_LOOKUP"".""Bookings Base List"", ""Missing_ORDERS>POS_LOOKUP"".""Bookings Net"", ""Missing_ORDERS>POS_LOOKUP"".""Bookings Quantity"", ""Missing_ORDERS>POS_LOOKUP"".""S" _
, _
"ales Level 1"", ""Missing_ORDERS>POS_LOOKUP"".""Partner Type"", ""Missing_ORDERS>POS_LOOKUP"".""ERP Bill To Customer Name"", ""Missing_ORDERS>POS_LOOKUP"".""Order Status"", ""Missing_ORDERS>POS_LOOKUP"".""Line Creati" _
, _
"on Date"", ""Missing_ORDERS>POS_LOOKUP"".""Order Source"", ""Missing_ORDERS>POS_LOOKUP"".""POS DISTRIBUTOR NAME"", ""Missing_ORDERS>POS_LOOKUP"".""Product ID"", ""Missing_ORDERS>POS_LOOKUP"".""POS Transaction ID"", ""M" _
, _
"issing_ORDERS>POS_LOOKUP"".""POS Trans Date"", ""Missing_ORDERS>POS_LOOKUP"".""Disti to Reseller Sales Order Date"", ""Missing_ORDERS>POS_LOOKUP"".""Invoice Number"", ""Missing_ORDERS>POS_LOOKUP"".""POS Base List P" _
, _
"rice"", ""Missing_ORDERS>POS_LOOKUP"".""Net POS (Validated) - Global"", ""Missing_ORDERS>POS_LOOKUP"".""Discount %"", ""Missing_ORDERS>POS_LOOKUP"".""Parent line ID"", ""Missing_ORDERS>POS_LOOKUP"".""Line ID""" & Chr(13) & "" & Chr(10) & "FROM C" _
, _
"NG_POS.dbo.""Missing_ORDERS>POS_LOOKUP"" ""Missing_ORDERS>POS_LOOKUP""" & Chr(13) & "" & Chr(10) & "WHERE (""Missing_ORDERS>POS_LOOKUP"".""POS DISTRIBUTOR NAME"" Like 'Tech%')" _
)
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:=False
End With
End Sub
我还想将源表名称保留为工作表名称,或者创建一个新字符串以包含分销商名称。
任何关于如何做到这一点的想法都将不胜感激,因为手动进行几乎是不可能的,并且不需要使用 MS 查询,这只是我可以确保在复制工作表时分销商数据是分开的一种方法。
我正在使用 excel 2013
【问题讨论】:
-
Worksheet.Copy 方法,如果您未指定目标,则将整个工作表复制到新工作簿。
-
我需要一个更复杂的版本,我可以按需重复此操作。我有 4 张纸(渗出的枢轴)需要用特定数据(不能有残留数据)复制 9 次,每周 2 次。
-
所以你想复制工作表,然后修改一些数据,然后重复此x次,每次将复制的工作表保存为新工作簿?
-
@alex4336 请参阅下面的答案,这基本上就是我试图做的事情,但现在我需要为每个源工作表创建一个宏,并为每个源工作表创建一个宏来编译结果并保存到新的工作簿中分销商,