初めてのポスターですので、フォーマットやガイドラインに従わなかった場合は、修正できるようにお知らせください。
したがって、基本的にユーザーにExcelファイルのファイルディレクトリを要求し、次にいくつかの変数を設定します(これらは他の場所で使用および変更されていたため、元々はプロジェクト変数として公開されていました)。また、これらの変数を何も設定しない行を追加しました(念のため、問題になるとは思わない)。次に、これらの変数を、アクセスするExcelファイル、ブック、およびシートに設定します。
Dim filepath as String
filePath = CStr(fileDialog) 'ask file dir, set to string
Dim sourceXL As Variant 'these three were orig project variables
Dim sourceBook As Variant
Dim sourceSheet As Variant
Dim sourceSheetSum As Variant
Set sourceXL = Nothing 'set to nothing in case...?
Set sourceBook = Nothing
Set sourceSheet = Nothing
Set sourceSheetSum = Nothing
Set sourceXL = Excel.Application 'set to the paths needed
Set sourceBook = sourceXL.Workbooks.Open(filePath)
Set sourceSheet = sourceBook.Sheets("Measurements")
Set sourceSheetSum = sourceBook.Sheets("Analysis Summary")
Dim measName As Variant 'create variable to access later
Dim partName As Variant
sourceSheetSum.Range("C3").Select 'THIS IS THE PROBLEM LINE
measName = sourceSheetSum.Range(Selection, Selection.End(xlDown)).Value
sourceSheetSum.Range("D3").Select
partName = sourceSheetSum.Range(Selection, Selection.End(xlDown)).Value
そこで、2つの異なるシート変数「sourceSheets」と「sourceSheetsSum」を作成しました。「sourceSheets」を使用するとコードは機能しますが、「sourceSheetsSum」を使用するとエラー1004が発生します。また、何らかの理由で「sourceSheetSum」をオーバーライドしていた場合に備えて、変数「sourceSheet」を完全に削除したコードを試しました。
以下に示すように、ワークブック内のすべてのシートをループして名前を出力するための簡単なコードを実行したので、Excelワークブックとシートが存在し、正しく呼び出されていることをかなり確信しています。
For j = 1 To sourceBook.Sheets.Count
Debug.Print (Sheets(j).name)
Next j
のデバッグ出力で
測定
分析要約
分析設定
それで、このエラーが何を意味するのか、またはエラーが実際に何であるかについてもっと知るためにどうすればよいのか、誰かが何か考えを持っていますか?
編集:それで、シート名のリストに少し追加することにしました。それがまったく役立つかどうかはわかりません。
For j = 1 To sourceBook.Sheets.Count
listSheet(j) = Sheets(j).name
Next j
Debug.Print (listSheet(2))
Set sourceSheetSum = sourceBook.Sheets(listSheet(2))
デバッグは分析の概要を出力するので、シートがブックに存在し、名前に「タイプミス」が含まれている問題はないはずです。
ただし、コードには同じ行で同じエラーがあります。
deusxmach1na:あなたは私に変えてほしかったと思います
Dim sourceXL As Variant
Dim sourceBook As Variant
Dim sourceSheet As Variant
Dim sourceSheetSum As Variant
Set sourceSheet = sourceBook.Sheets("Measurements")
に
Dim sourceXL As Excel.Application
Dim sourceBook As Excel.Workbook
Dim sourceSheet As Worksheet
Dim sourceSheetSum As Worksheet
Set sourceSheet = sourceBook.Worksheets("Measurements")
しかし、これはエラーを変更しません。私はそれをそれに似ていたのを覚えています。そして、バリアントがキャッチオールのようなものであり、実際にはバリアントが何であるかについてそれほどしっかりしていないことを読んだので、それを変更しました。