2017-05-24 127 views
0

我試圖打開一個文件中的第三個工作表,以獲取信息的來源。該.FileDialog工作正常,我可以選擇一個文件,但由於線路Set wbR = wb.Worksheets(3)附近的代碼,因爲wb.Worksheets(3) = <Object variable or With block variable not set>本節的底部我不斷收到run-time error '91'。這使我相信我的Set wb = Workbooks.Open(myFile)不能正常工作,並返回Nothing,而是通過其他人如何使用.FileDialog打開的文件看後,我看不到我的怎麼是不同的,將無法正常工作。任何幫助或建議將不勝感激。VBA錯誤「91」 - 找不到錯誤

'Set variables 
Dim wb As Workbook 'Workbook to open 
Dim wbR As Worksheet 'This is the raw data on the new workbook 
Dim wsL As Worksheet 'Worksheet in current file 
Dim myFile As String 'File to open 
Dim FilePicker As FileDialog 

'Set light chain hit worksheet 
Set wsL = ThisWorkbook.Worksheets(3) 

'Optimizes Speed 
Application.ScreenUpdating = False 
Application.EnableEvents = False 
Application.Calculation = xlCalculationManual 

'Retrieve target file 
Set FilePicker = Application.FileDialog(msoFileDialogFilePicker) 

'Opens folder-picking window 
With FilePicker 
    .Title = "Select a file." 
    .AllowMultiSelect = False 
    If .Show <> -1 Then GoTo NextCode 
    myFile = Dir(.SelectedItems(1)) 
End With 

'If folder is not selected 
NextCode: 
    myFile = myFile 
    If myFile = "" Then GoTo ResetSettings 

'Set variable equal to opened workbook 
Set wb = Workbooks.Open(myFile) 
'Ensure Workbook has opened before moving on to next line of code 
DoEvents 
'Sets worksheet for importing 
Set wbR = wb.Worksheets(3) 

*宏繼續過去的最後一行,但它並沒有得到它只因這錯誤

+1

你有3個工作表?你可能是指'set wbR = wb.Worksheets(「Sheet3」)'?另外,在調試時,保持'ScreenUpdating'處於ON狀態,然後用'F8'遍歷代碼,看看你的'wb'工作簿是否實際打開。 – BruceWayne

+0

嘗試像'如果不WB是沒什麼然後設置WBR = wb.Worksheets(3)'這將阻止它試圖在不將其放置在世界銀行工作。這將確認或否認這是問題的根源。 –

+0

我的代碼沒有出現錯誤。確保兩個工作簿都有3個工作表。布蘭登在設置工作簿時對於安全是正確的,但由於它在我的機器上運行良好,我認爲這可能不是問題。 –

回答

0

對不起,我不得不使用回答框要做到這一點,因爲有代碼參與。但是,不,你做得很好。這是調試的工作原理。現在我們知道哪些線路無法正常工作,我們將嘗試找出原因。現在試着改變

wsL = ThisWorkbook.Worksheets(3) 

wsL = ThisWorkbook.Worksheets(1) 

wsL = ThisWorkbook.Worksheets("PUTnameOFsheetHere") 

,看它是否設置與否。如果是這樣,那麼我們知道WorkSheets(3)存在某種問題。

現在,我們將試圖找到爲什麼「設置白平衡= Workbooks.Open(MYFILE)」是行不通的。調諧你的宏錄製。到達菜單上的「文件」並選擇「打開」。該對話框將打開。在對話框中搜索您的文件並將其打開。返回到原始工作簿並停止錄製。找到錄製的宏,您將看到Excel用於打開文件的確切行。它應該是這樣的:

Workbooks.Open Filename:="C:\Files\CNC TEST.xlsx" 

現在運行與PF8腳本和鼠標懸停在「MYFILE」它被初始化後。它的值是否與記錄的宏文件的路徑和文件名相匹配?

+0

我確定錯誤的來源是'Set wb = Workbooks.Open(myFile)'行。我[發佈另一個問題](https://stackoverflow.com/questions/44169301/vba-workbook-openfile-returns-nothing?noredirect=1#comment75355972_44169301),因爲我仍然無法得到的東西運行。 '.Open(myFile)'似乎沒有工作,即使我使用路徑和文件的字符串而不是'myFile'。 – MTJ