Póster por primera vez, por lo que si hay algún formato o directrices que no pude cumplir, hágamelo saber para que pueda solucionarlo.VBA error 1004 - seleccione el método de clase de rango fallido
Así que, básicamente, le pido al usuario el directorio de archivos del archivo de Excel, luego configuro algunas variables (originalmente establecidas en público como variables del proyecto, ya que estas se usaban y cambiaban en otros lugares). También agregué las líneas para establecer estas variables a nada (por si acaso, no creo que eso importe). Luego establezco estas variables en el archivo de Excel, el libro de trabajo y las hojas a las que quiero acceder.
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
lo que he creado dos variables diferentes hoja 'sourceSheets' y 'sourceSheetsSum', el código funciona si uso sourceSheets '', pero el error 1004 se produce si yo uso 'sourceSheetsSum'. También probé el código con la variable 'sourceSheet' eliminada por completo, en caso de que estuviera anulando 'sourceSheetSum' por algún motivo.
Estoy bastante seguro de que el libro de Excel y las hojas existen y se llaman correctamente, ya que ejecuté un código rápido para recorrer todas las hojas del libro de trabajo y mostrar los nombres, que se muestran a continuación.
For j = 1 To sourceBook.Sheets.Count
Debug.Print (Sheets(j).name)
Next j
Con la salida de depuración de
Mediciones
Resumen del análisis Ajustes
Análisis
Así que, ¿alguien tiene alguna idea de lo que podría significar este error, o cómo puedo ¿posiblemente vas a encontrar más acerca de qué es realmente el error?
EDIT: Así que decidí agregar un poco a la lista de los nombres de las hojas, no estoy seguro si ayudará en absoluto.
For j = 1 To sourceBook.Sheets.Count
listSheet(j) = Sheets(j).name
Next j
Debug.Print (listSheet(2))
Set sourceSheetSum = sourceBook.Sheets(listSheet(2))
El análisis de las impresiones de depuración Resumen, por lo que saben que existe la hoja del libro, y no debería haber ningún problema con un 'error tipográfico' en los nombres.
Sin embargo, el código todavía tiene el mismo error en la misma línea.
deusxmach1na: Creo que quería que yo cambie
Dim sourceXL As Variant
Dim sourceBook As Variant
Dim sourceSheet As Variant
Dim sourceSheetSum As Variant
Set sourceSheet = sourceBook.Sheets("Measurements")
Para
Dim sourceXL As Excel.Application
Dim sourceBook As Excel.Workbook
Dim sourceSheet As Worksheet
Dim sourceSheetSum As Worksheet
Set sourceSheet = sourceBook.Worksheets("Measurements")
Pero esto no cambia el error, recuerdo que tuve que similar a eso, y luego lo cambió desde He leído que la variante es como una captura de todo, no realmente tan sólida en qué variante es.
Me gustaría atenuar sus hojas específicamente como hojas de trabajo tal vez y ver qué pasa. 'Dim sourceSheetSum como Worksheet' En realidad, es posible que desee atenuar todo con más especificidad. – deusxmach1na