2

「テーブルの作成」SQL スクリプトを生成するためのツールとして、マクロ対応の 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が1つだけ必要です。つまり、インデックス ファイルは、「スクリプト ジェネレーター」形式の新しいシートを内部的に開いたり追加したりして、1 つの完全なツールを形成する必要があります。おそらく、このシートを非表示にし、マクロを介してそのインスタンスを呼び出し、それらのシートの名前を変更することによって。VBAを介してそれを行う方法は?誰かがこれで私を助けてくれますか?

4

2 に答える 2

3

ワークシートの Visible プロパティの設定に True と False を使用することはお勧めできません。既に提供されている定数 (xlSheetHidden、xlSheetVeryHidden、および xlSheetVisible) を使用する必要があります。

xlSheetVisible はシートを表示し、xlSheetHidden はシートを非表示にします。xlSheetVeryHidden に設定すると、シートを表示できる唯一の方法は、VBA を使用することであり、Excel メニューバーの [書式] -> [シート] -> [再表示] を使用しないことになります。

使用法:

Sheets("Script_Template").Visible = xlSheetVisible
于 2012-06-26T08:22:13.303 に答える
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
于 2012-06-26T06:57:22.063 に答える