2015-09-04 125 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 
相關問題