2017-05-24 24 views
0

ファイルを開き、3番目のワークシートの情報にアクセスしようとしています。 .FileDialogはうまく動作し、ファイルを選択することができますが、wb.Worksheets(3) = <Object variable or With block variable not set>のため、このセクションの末尾にあるSet wbR = wb.Worksheets(3)という行のために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

'Not wb is Nothing Then Set wbR = wb.Worksheets(3)'これは、設定されていない場合にwbを操作しようとするのを防ぎます。これにより、これが問題の原因であることを確認または拒否します。 –

+0

あなたのコードに間違いはありません。両方のワークブックに3つのワークシートがあることを確認してください。 Brandonは、ワークブックを設定するときに安全であることについて正しいですが、それは私のマシンで正常に動作したので、それは問題ではないかもしれないと思います。 –

答えて

0

申し訳ありませんが、私はコード関係がありますので、これを行うために解答ボックスを使用する必要があります。しかし、いいえ、あなたはうまくやっています。これがデバッグの仕組みです。どのラインが機能していないのかわかったので、なぜそれを見つけようとします。今ではセットかどうかを確認するために

wsL = ThisWorkbook.Worksheets(1) 

または

wsL = ThisWorkbook.Worksheets("PUTnameOFsheetHere") 

wsL = ThisWorkbook.Worksheets(3) 

を変更してみてください。もしそうなら、私たちはWorkSheets(3)に何か問題があることを知っています。

ここで、「Set wb = Workbooks.Open(myFile)」が機能していない理由を調べます。あなたのマクロ記録のTunr。メニューの "File"に移動し、 "Open"を選択します。ダイアログボックスが開きます。ダイアログボックスでファイルを検索して開きます。元のブックに戻り、録音を停止します。記録されたマクロを検索すると、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

関連する問題