質問: Workbooks.Open(fPath) 'これをセル抜き出しから数値抜出に変更⇔循環小数エラーの解決。 Target.Sheets(1).Range("G2").Copy ThisWorkbook.Sheets(2).Range("A2") Target.Sheets(1).Range("H2").Copy ThisWorkbook.Sheets(2).Range("A3") End Sub ``` ### 試したこと 前回質問したと同一のVBAですが、不要な記述を削除して整形しました。 今回のエラーの再現性から、"1回目にエクセルファイルを開いたときにどこかに値を取得して"しまっていて、"2回目以降、その1回目に取得したパスの値と違う"ことが"実行時エラー'91'"の原因なのではと考えました。 すると例えば、23行End Subの真上に〇〇.Clearと処理完了時に値をクリアする命令文を入れれば解決するのかと思い、該当する記述を調べましたがわかりませんでした。もしおわかりになればお願いします。 ### 補足情報(FW/ツールのバージョンなど) Excle2016
回答: 開くファイルは読み取り専用で良いのですよね? ちょいと↓のテストお願いします ``` Private Sub testmacro() Dim fType As Variant Dim fPath As Variant '選択できるファイルの種類はすべてのファイル★Excelファイルに限定していいんじゃ? fType = "Excel,*.xls*" 'ファイル参照ダイアログの表示 fPath = Application.GetOpenFilename(fType) If fPath = False Then 'ダイアログでキャンセルボタンが押された場合は処理を終了します 'End は使わない★ Exit Sub End If Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(2) Application.EnableEvents = False Dim wb As Workbook Set wb = Workbooks.Open(fPath, UpdateLinks:=False, ReadOnly:=True) Application.EnableEvents = True MsgBox wb.Name 'これをセル抜き出しから数値抜出に変更⇔循環小数エラーの解決。★コメント内容不一致? wb.Sheets(1).Range("G2").Copy ws.Range("A2") wb.Sheets(1).Range("H2").Copy ws.Range("A3") End Sub ```