2017-05-24 107 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