2013-05-08 81 views
1

我試圖打開工作簿並從中刪除工作表,但它運行的代碼沒有錯誤,工作表仍然存在... 我可以修改它,如我將公式更改爲另一張紙上的值。 首先 - 是的,我知道「我」變量設置爲1次迭代。 不知何故,現在當我打開工作簿時,它說它被我鎖定 - 我甚至不知道該怎麼做。無法刪除工作表

那麼......我該如何解鎖它? 當我去文件 - >信息 - >權限它說'任何人都可以複製,更改和修改此工作簿的任何部分....我可以手動刪除工作表...

這裏是代碼:

Sub Change() 

Dim wb As Excel.Workbook 
Set wb = ThisWorkbook 

Dim ws As Excel.Worksheet 
Set ws = wb.Sheets("FileSearch Results") 

Dim rng As Range 
Set rng = ws.UsedRange 

Dim cPaths As Integer 
cPaths = rng.Column 

Dim i As Integer 
i = rng.Row 

Dim oExcel As Excel.Application 
Set oExcel = New Excel.Application 

Dim oWB As Workbook 

Dim komm As Excel.Worksheet 
Dim sh1 As Excel.Worksheet 

Do While i < 2 
    Dim pth As String 
    pth = ws.Cells(i, cPaths) 
    Set oWB = oExcel.Workbooks.Open(pth) 

    Set sh1 = oWB.Worksheets("Sheet1") 
    With sh1.UsedRange 
     .Value = .Value 
    End With 

    Set komm = oWB.Worksheets("Kommentar") 
    Application.DisplayAlerts = False 
    komm.Delete 
    Application.DisplayAlerts = True 



    oWB.Close savechanges:=True 
    i = i + 1 
Loop 
End Sub 

任何想法?

+0

試圖刪除工作表時是否出現錯誤? – 2013-05-08 09:14:38

+0

不是,它執行代碼,但什麼都沒有發生...... – Vihar 2013-05-08 09:18:58

+0

'set komm'添加一行'Debug.Print(komm.Name)'後,查看您的直接窗口,看看您是否可以訪問該表 – 2013-05-08 09:21:43

回答

1
Sub Change() 

Dim wb As Excel.Workbook 
Set wb = ActiveWorkbook 'ThisWorkbook 

Dim ws As Excel.Worksheet 
Set ws = wb.Sheets("FileSearch Results") 

Dim rng As Range 
Set rng = ws.UsedRange 

Dim cPaths As Integer 
cPaths = rng.Column 

Dim i As Integer 
i = rng.row 

'Dim oExcel As Excel.Application ***CHANGED*** 
'Set oExcel = New Excel.Application ***CHANGED*** 

'Dim oWB As Workbook ***CHANGED*** 

Dim komm As Excel.Worksheet 
Dim sh1 As Excel.Worksheet 

Do While i < 2 
    Dim pth As String 
    pth = ws.Cells(i, cPaths) 
    'Set oWB = oExcel.Workbooks.Open(pth) ***CHANGED*** 

    Workbooks.Open (pth) '***ADDED*** 

    Set sh1 = ActiveWorkbook.Worksheets("Sheet1") 'oWB.Worksheets("Sheet1") ***CHANGED*** 
    With sh1.UsedRange 
     .Value = .Value 
    End With 

    Set komm = ActiveWorkbook.Worksheets("Kommentar") 'oWB.Worksheets("Kommentar") ***CHANGED*** 
    Application.DisplayAlerts = False 
    komm.Delete 
    Application.DisplayAlerts = True 

    ActiveWorkbook.Close savechanges:=True 'oWB.Close savechanges:=True ***CHANGED*** 
    i = i + 1 

Loop 

End Sub 

現在打開工作簿並刪除前景中的工作表,而不是調用Excel的新實例並刪除後臺中的工作表。這就是文件保持鎖定狀態的原因,因爲未由代碼關閉的新實例仍然保留它。

+0

它完美的工作!謝謝! – Vihar 2013-05-08 11:50:12