2015-09-04 128 views
0

我在数据库工作表中有一个表格,我想将其链接粘贴到另一个表格。但是我意识到使用excel和vba是不可能的。有没有办法自动引用这些表格?等于单元格范围是我知道的一种方式,但它非常单调乏味,因为我有超过50个这样的表格。对这些方程式进行硬编码是一个麻烦。这是我为复制粘贴表格而做的一个基本代码。使用vba将单个表格镜像到excel中的多个工作表

Sub table() 


ActiveSheet.ListObjects("Table1").Range.Copy 
'This code will run only when the cursor is at activesheet 

Sheets("Sheeet2").Range("A2").PasteSpecial xlPasteValues 

End Sub 
+0

“粘贴链接到另一个工作表” - 你意味着创建一个超链接来打开引用的工作表,或者你想“镜像”数据,因此它始终与原始范围相同。两者都是可能的(第二次最简单的解决方案是数据透视表)。你也可以将你的代码放在Sheet2的OnActivate事件过程中,并且每次打开该表单时都会执行副本。但是我不明白为什么你需要在多个工作表上完全相同的数据。 –

+0

镜像数据。因为工作表之一是包含所有表的数据库工作表。这些表分散在几个仪表板表中,每当我对数据库进行更改时,它应该自动修改所有其他表。我可以用单元格完成,但现在它涉及表格,所以我真的需要pastelink将表格互相引用@MátéJuhász – Niva

+0

@Niva可以用表格镜像数据,我建议查看数据 - >现有连接和谷歌(迄今为止唯一的问题是,它不复制1对1它重新排列顺序排列) – DragonSamu

回答

1

这里是如何Table Connections添加到新的Workbook一个例子,一个办法Refresh表。

通过ListObjects每个ListObjectTables)代码的步骤,.Add的连接到新Workbook并放置TableWorksheet
然后创建一个新的Worksheet并处理下一个ListObject

您可以根据需要更改WorkbookWorksheet名称+路径。

*请注意,由于不明原因,Table在将它们放入新的Worksheet时混合起来,但它不会混合Columns

AddTableConnectionsToNewWB代码:

Sub AddTableConnectionsToNewWB() 

Dim tbl As ListObject 
Dim tblConn As ListObjects 
Dim wb As Workbook 

Application.ScreenUpdating = False 

Set wb = Workbooks("TableConnections.xlsm") 
Set tblConn = Workbooks("TestBook3.xlsm").Worksheets("Sheet2").ListObjects 
For Each tbl In tblConn 
    wb.Connections.Add2 "WorksheetConnection_TestBook3.xlsm!" & tbl, _ 
    "", "WORKSHEET;H:\Projects\TestBook3.xlsm", "TestBook3.xlsm!" & tbl, 7, True, _ 
    False 

    If wb.Worksheets.Count = 1 Then 
     With ActiveSheet.ListObjects.Add(SourceType:=4, Source:=ActiveWorkbook. _ 
     Connections("WorksheetConnection_TestBook3.xlsm!" & tbl), Destination:=Range(_ 
     "$A$1")).TableObject 
     .RowNumbers = False 
     .PreserveFormatting = True 
     .RefreshStyle = 1 
     .AdjustColumnWidth = True 
     .ListObject.DisplayName = tbl.Name 
     .Refresh 
    End With 
    wb.Worksheets.Add after:=wb.Worksheets(Worksheets.Count) 
    Else 

    With ActiveSheet.ListObjects.Add(SourceType:=4, Source:=ActiveWorkbook. _ 
     Connections("WorksheetConnection_TestBook3.xlsm!" & tbl), Destination:=Range(_ 
     "$A$1")).TableObject 
     .RowNumbers = False 
     .PreserveFormatting = True 
     .RefreshStyle = 1 
     .AdjustColumnWidth = True 
     .ListObject.DisplayName = tbl.Name 
     .Refresh 
    End With 
    If tblConn.Item(tblConn.Count).Name <> tbl.Name Then 
     wb.Worksheets.Add after:=wb.Worksheets(Worksheets.Count) 
    End If 
    End If 
Next 
Application.ScreenUpdating = False 
End Sub 

刷新代码(这也可以通过简单地点击刷新表工具所有按钮来完成):

Sub RefreshTableConnections() 

Dim wb As Workbook 
Application.ScreenUpdating = False 
Set wb = Workbooks("TableConnections.xlsm") 
wb.RefreshAll 
Application.ScreenUpdating = True 


End Sub 
相关问题