2016-05-12 8 views
0

私はMS Accessにワークブックとワークシートをたくさん作成しています。ワークブックが作成されると、ワークブックに「Sheet n」という余分なワークシートがあります。Excel VBA不要なワークシートを削除

私は次のコードの動作を知っていますが、私の質問はタイミングです。

Dim ws as excel.worksheet 
For each ws in wbWorking.Worksheets 
    oxl.DisplayWarnings=False 
    If ws.name like "Sheet*" then ws.delete 
    oxl.DisplayWarnings=True 
Next ws 

上記のコードは、ブックを保存するまで機能しません。問題は、クライアントがワークブックでディレクトリを作成するのを監視し、表示されるとすぐに開きます。上記のコードが実行され、クライアントがブックを開いている場合、これにより問題が発生します。ワークブックを保存する前にワークシートを削除したいと思います。

お知らせください。あなたが最初に新しいブックを作成するときに、これらの線に沿って何かが動作するはずですから作業

+0

を保存する前に、プロセスの最後にワークシートを削除することをお使いですか?余分なシートを追加していますか? –

+0

作業システムが、この記事に従って、Excelデータの共有と共同作業について概説された原則に従っている場合-data-3c4fb64f-bf46-42a4-9f6a-73cc6367d378>多くの問題を解決することができます。それはあなたの親切な熟読のためであり、あなたの輪郭を描かれた問題を解決するものではありません。 – skkakkar

+0

@skkakkar「ページ」が見つかりません。エラーです。 –

答えて

0

Public Function BuildWorkbook(wbkToCopy As Excel.Workbook) As Excel.Workbook 
    Dim xl As Excel.Application 
    Dim dummySheet As Excel.Worksheet 
    Dim sheetToClone As Excel.Worksheet 
    Dim i As Long 
    Set xl = wbkToCopy.Application 
    Set BuildWorkbook = xl.Workbooks.Add(1) 
    Set dummySheet = BuildWorkbook.Worksheets(1) 
    For Each sheetToClone In wbkToCopy.Worksheets 
    'This is just to handle naming conflicts 
    Do Until sheetToClone.Name <> dummySheet.Name 
     dummySheet.Name = Format(Now(), "yyyymmddhhnnss") & CStr(i) 
     i = i + 1 
     DoEvents 
    Loop 
    sheetToClone.Copy BuildWorkbook.Worksheets(1) 
    Next 
    If BuildWorkbook.Worksheets.Count > 1 Then 
    dummySheet.Delete 
    End If 
End Function 

明らかにあなたがする必要があるしかし、あなたはシートを追加することができますが、キーは以下のとおりです。

  • 新しいブックを作成するとき、それはあなたが最初に新しいワットを作成するときにしたくないワークシートへの参照を設定するだけで1ワークシート
  • を使用して作成されるように、=Workbooks.Add(1)を指定しますorkbook
  • あなたはワークブックを作成するためのテンプレートを使用していた初期の参照が、ワークブック
関連する問題