2011-08-24 27 views
11

Estoy tratando de encontrar una manera de usar un nombre de hoja de Excel como una variable en una macro que he escrito. Cada mes trato con un libro de trabajo que me es enviado con 2 hojas. Parte de la macro usa la interfaz 'Abrir archivo' para navegar a la carpeta y abrir el archivo.Obtener el nombre de la hoja de Excel y usarlo como variable en macro

La primera hoja del archivo se llama 'Informe', que es estática. Todo lo que hago con eso es eliminarlo (porque no lo necesito).

La segunda hoja se podría llamar cualquier cosa y esa es la hoja sobre la que necesito ejecutar la macro. ¿Hay alguna manera de decir:

shtName = %whatever_the_sheetname_is_called% 

y luego usar la variable 'shtName' en toda la macro? Supongo que también sería útil obtener este nuevo nombre de archivo como variable.

Respuesta

27

en una macro de Visual Basic que usaría

pName = ActiveWorkbook.Path  ' the path of the currently active file 
wbName = ActiveWorkbook.Name  ' the file name of the currently active file 
shtName = ActiveSheet.Name  ' the name of the currently selected worksheet 

La primera hoja de un libro puede ser referenciado por

ActiveWorkbook.Worksheets(1) 

así que después de la eliminación de la ficha [Informe] que usaría

ActiveWorkbook.Worksheets("Report").Delete 
shtName = ActiveWorkbook.Worksheets(1).Name 

para "trabajar en esa hoja más adelante" puede crear un objeto de rango como

Dim MySheet as Range 
MySheet = ActiveWorkbook.Worksheets(shtName).[A1] 

y seguir trabajando en MySheet(rowNum, colNum) etc ...

creación del acceso directo de un objeto de rango sin definir shtName:

Dim MySheet as Range 
MySheet = ActiveWorkbook.Worksheets(1).[A1] 
+0

+1 su respuesta es muy clara – JMax

+0

De acuerdo. Eso es justo lo que estaba buscando. –

Cuestiones relacionadas