2012-06-26 37 views
2

我創建一個啓用宏的excel作爲生成'create table'sql腳本的工具。 工作表創建的地方需要輸入列名,數據類型等,並在一個按鈕上單擊腳本將生成。這張表被稱爲'腳本生成器'。現在我需要一個包含表名和按鈕的「索引」表。當我點擊按鈕時,我需要爲每個表名稱打開「腳本生成器」表單,這些表單應該重命名爲表名。如何使用vba在Excel中創建隱藏工作表的實例?

索引表代碼是這樣的:

Sub Add_sheets() 
On Error Resume Next 
Dim count As Integer 
Dim r As Range 
Dim sh As Worksheet 

For Each r In Range("A3:A103") 
If Not r = "" Then 
    count = 0 
For Each sh In ActiveWorkbook.Sheets 
If sh.Name = r.Value Then 
    count = count + 1 
End If 
Next sh 
If count = 0 Then 
With ActiveWorkbook.Sheets 
.Add(after:=Worksheets(Worksheets.count), Type:="C:\Macro\Script_Template.xltm").Name = r.Value 
End With 

ActiveSheet.Hyperlinks.Add Anchor:=r, Address:="", _ 
SubAddress:=Sheets(r.Value).Name & "!A1" 
End If 
End If 
Next r 
End Sub 

現在的問題是我加入另存爲「Script_Template.xltm」外部腳本生成。我只需要一個將完成這一切的excel。意思是,索引文件應該在內部打開/添加格式「腳本生成器」的新表格,以便它形成一個完整的工具。也許通過隱藏這張表並通過macos調用它的實例並重命名這些表。如何通過VBA做到這一點?這將是巨大的,如果有人可以幫助我..謝謝

回答

2

您可以創建一個「Script_Template」表並隱藏,然後使用此代碼創建一個副本

Sheets("Script_Template").Visible = True 
Sheets("Script_Template").Copy After:=Sheets(ThisWorkbook.Sheets.count) 
ActiveSheet.Name = r.Value 
Sheets("Script_Template").Visible = False 
+0

有一點需要注意的 - 至少在XL2007 +在Windows上:當您複製片並不總是最終的ActiveSheet。當我們從Office 2003切換時必須改變一堆宏。 –

+0

嗯,這很奇怪。我不知道是什麼原因造成的?我從來沒有遇到過添加工作表後,新工作表永遠不是活動工作表?我能想到的一個可能的原因是一些代碼將活動頁面更改爲'Workbook_NewSheet(ByVal Sh As Object)'中的其他頁面? –

+0

非常感謝!它的工作:) – Appy

2

使用真與假的設置工作表的可見屬性不是很好的做法。你應該使用已經提供的常量 - xlSheetHidden,xlSheetVeryHidden和xlSheetVisible。

xlSheetVisible將使您的工作表可見並且xlSheetHidden將隱藏您的工作表。將其設置爲xlSheetVeryHidden將確保唯一可以使工作表可見的方式是通過VBA,而不是通過Excel菜單欄「格式」 - >「表格 - >取消隱藏」。

用法:

Sheets("Script_Template").Visible = xlSheetVisible 
+0

嗯...對啊..感謝:) – Appy

相關問題