Exportar datos desde access con nombre definido

Tengo un botón que al accionarlo exporta una tabla, que se construye con los datos de una consulta, ahora, lo que necesito es que al guardar la exportación lo haga con un nombre que yo defina ya que esta base de datos la usan 6 clientes y al agrupar las exportaciones se sobre escriben

Private Sub cmdExportar_Click()
Dim rstNombrePrograma As DAO.Recordset, _
rstTituloTema As DAO.Recordset, _
qdf As DAO.QueryDef, _
strSQL As String, _
strHoja As String, _
strArchivo As String, _
strTitulo As String, _
Campo As DAO.Field, _
lngColumna As Long, _
i As Long, _
xls As Object 'Excel.Application
Const xlWBATWorksheet = -4167
Const xlAutomatic = -4105
Const xlSolid = 1
Const xlThemeColorDark1 = 1
Const xlToRight = -4161
Const xlNormal = -4143

On Error GoTo cmdExportar_Click_TratamientoErrores

strSQL = "SELECT NombrePrograma"
strSQL = strSQL & " FROM ProgramasEmitidos"
strSQL = strSQL & " GROUP BY NombrePrograma"

Set xls = CreateObject("Excel.Application")
xls.Visible = True

xls.Workbooks.Add xlWBATWorksheet
strHoja = xls.ActiveSheet.Name

Set rstNombrePrograma = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

If Not (rstNombrePrograma.EOF And rstNombrePrograma.BOF) Then
Do
StrSQL = "SELECT TituloTema, NombreAutor, NombreInterprete, Sonatas, Fecha, Calculo, Local, Plantilla "
strSQL = strSQL & "FROM ProgramasEmitidos"
strSQL = strSQL & " WHERE NombrePrograma = Parametro1"
Set qdf = CurrentDb.CreateQueryDef("", strSQL)

Set rstTituloTema = qdf.OpenRecordset
xls.ActiveWorkBook.Sheets.Add Before:=xls.Worksheets(xls.Worksheets.Count)
xls.ActiveSheet.Name = rstNombrePrograma!NombrePrograma
With xls
lngColumna = 1
For Each Campo In rstTituloTema.Fields
strTitulo = ""
For i = 1 To Len(Campo.Name)
strTitulo = strTitulo & Mid(Campo.Name, i, 1)
If i < Len(Campo.Name) Then
If EsMayuscula(Mid(Campo.Name, i + 1, 1)) Then strTitulo = strTitulo & " "
End If
Next i
.ActiveSheet.Cells(1, lngColumna) = strTitulo
lngColumna = lngColumna + 1
Next Campo
.Range("A1").Select
.Range(.Selection, .Selection.End(xlToRight)).Select
.Selection.Font.Bold = True
With .Selection.Interior
.Pattern = xlSolid
.ColorIndex = 15
End With
End With

If Not (rstTituloTema.EOF And rstTituloTema.BOF) Then
xls.ActiveSheet.Cells(2, 1).CopyFromRecordset rstTituloTema
End If
xls.Columns("A:G").EntireColumn.AutoFit
rstNombrePrograma.MoveNext
Loop Until rstNombrePrograma.EOF
End If

xls.Application.DisplayAlerts = False
xls.ActiveWorkBook.Worksheets(strHoja).Delete

strArchivo = "D:\SG RADIO\EXPORTACIONES\11 Derecho Autor Obras Completas.xls"

If Not Nz(strArchivo, "") = "" Then
xls.ActiveWorkBook.SaveAs FileName:=strArchivo, FileFormat:=xlNormal
Else
xls.ActiveWorkBook.Saved = True
End If
xls.Application.DisplayAlerts = True

cmdExportar_Click_Salir:
On Error Resume Next
xls.Quit
Set xls = Nothing
Set qdf = Nothing
CierraRecordsetDAO rstNombrePrograma
CierraRecordsetDAO rstTituloTema
On Error GoTo 0
Exit Sub
cmdExportar_Click_TratamientoErrores:
MsgBox "Error " & Err & " en proc.: cmdExportar_Click de Documento VBA: Form_frmFrmIniInformes (" & Err.Description & ")", vbCritical + vbOKOnly, "ATENCION"
Resume cmdExportar_Click_Salir
Resume Next
End Sub ' cmdExportar

2 respuestas

Respuesta
1

O sea, a la tabla ya se le pone nombre aquí, lo que deseo es que le agregue algo más, automáticamente, para que pueda diferenciar unas de otras

Si se ha fijado la base de datos tiene que ver con las emisoras de radio de mi provincia, la situación es que uso un consolidador para obtener la información resumida, si con la fecha y hora no se sobre escriben una a otras entones vale, de lo contrario pudiera ser algo mas que tomara incluso de una tabla o consulta y no he sabido hacerlo, soy aprendiz

Respuesta
1

Y esa diferencia podría ser ¿la hora minuto y segundo por ejemplo?

Si es así solo se ha de tener en cuenta que el sistema operativo no admite algunos caracteres y la solución se podría ser similar a esta:

...
strArchivo = "D:\SG RADIO\EXPORTACIONES\11 Derecho Autor Obras Completas.xls"
...

--- Con el diferencial añadido ---
...

strArchivo = "D:\SG RADIO\EXPORTACIONES\11 Derecho Autor Obras Completas " & Format(Now, "hh-nn-ss") & ".Xls"
...

El resultado final (a las diez horas veinte minutos y catorce segundos de un día cualquiera):

D:\SG RADIO\EXPORTACIONES\11 Derecho Autor Obras Completas 10-20-14.Xls

Si se ha fijado la base de datos tiene que ver con las emisoras de radio de mi provincia, la situación es que uso un consolidador para obtener la información resumida, si con la fecha y hora no se sobre escriben una a otras entones vale, de lo contrario pudiera ser algo mas que tomara incluso de una tabla o consulta y no he sabido hacerlo, soy aprendiz

Me centre en diferenciar archivos con el mismo nombre, también se pueden numerar y la solución optima es la que mejor se adapte a la necesidad.

No se puede garantizar que no se repita un dato en el se intervalo, la numeración debería tener en cuenta la frecuencia con que se crean los archivos, si fuese diaria, la fecha seria una opción, si en la misma fecha se pueden generar varios archivos, se añade la hora y una frecuencia mayor añadiría los minutos ...

Si se añade la fecha (año mes y día) el separador puede ser un problema y se tendrá que sustituir por el guion o cualquier carácter que admita el sistema operativo (y ello se logra con la función Format al igual que con la hora en el ejemplo anterior) en el que se sustituyeron los dos puntos como separador.

Si se prefiere una numeración correlativa ascendente se puede lograr, habrá que localizar concurrencias leyendo el directorio, verificar cual es la mayor, incrementarla y utilizar el dato para guardarlo.

La fecha es mas sencilla (y si se utiliza añade un dato mas: cuando se genero), dato que prevalece sobre la fecha de creación que se pierde al manipular el fichero.

Para decidir hay que disponer de mas datos y prevalece la decisión del programador, desde aquí solo se puede colaborar para lograr el objetivo.

Gracias Enrique, la situación es que como puede ver en el ejemplo, que por cierto, en él solo pongo una exportación, es que en un momento inicial yo hice seis bases de datos, una para cada emisora de radio, y en la exportación hacia mención a la misma, ejemplo: 

11 Derecho Autor Obras Completas RL.xls (de Radio Libertad)

Entonces preparé el consolidador para que, haciéndole mención de los nombres específicos, importara a una tabla en la base de datos consolidador, los datos de las 6 emisoras.

Ahora he pasado a una nueva fase, donde debido a la aceptación del programa en la provincia, es muy posible se use en el país completo, soy de Cuba. y como va a ser muy engorroso preparar una por una todas las provincias, decidí quitarle la referencia a las emisoras y por ende se me complica toda la madeja ya que se copiaban todos los ficheros a una carpeta "ESPORTACIONES RECIBIDAS" y desde allí el consolidador las importaba. Todo funcionaba ok. Ahora al llamarse todas igual entonces se sobre escriben.

El problema es que cualquier cosas que se le agregue al nombre de la tabla al final va a repercutir en el consolidador a no ser que este no distinga e importe el fichero que se le ordene siempre que cumpla las reglas de que sea excel o html pus hay otra parte que la base primaria exporta en ese formato.

Si me puede ayudar se lo voy a agradecer, de lo contrario tendré que arreglar las bases de datos por provincias, un abrazo

Posiblemente si yo crease un entorno como ese, no utilizaría los nombres comerciales, utilizaría el código de la emisora que presumo será un dato de longitud constante y que puedo utilizar o ignorar a la hora de localizar datos.

Aclaro este punto:
Supongamos un código de emisora tal como EAJ44, aplicando filtros sobre el dato de muestra publicado: Derecho Autor Obras Completas RL.xls

Su titulo seria: EAJ44 Derecho Autor Obras Completas RL.xls

Si necesito los archivos que corresponden a ese código lo aplico en la búsqueda:
... Where Left (Emisora, 5) = "EAJ44" (tomamos solo los cinco caracteres iniciales)

Si deseo obtener los archivos con los derechos de autor (de las emisoras)
... Where InStr (Emisora, "Derecho Autor") =7 (la cadena a localizar ha de comenzar en el séptimo carácter)

Si necesitase diferenciarlos (y ordenarlos por antigüedad) se añade a continuación del titulo la fecha 'condensada' un día tal que '20 de enero del año 2023' ==> 20230120 (sale de Format(date,"yyyymmdd")

Y el archivo se llamará así:
EAJ44 20230120 Derecho Autor Obras Completas RL.xls

Ambos datos (emisora y fecha) juntos suman 5 +1+8 total 14 caracteres que se pueden ignorar a voluntad y permiten unificar, filtrar y organizar la documentación (juntos, pero no amontonados).

Sobre el diseño en el que se aunaran todas las emisoras supongo que se utilizara todo (o casi todo) de lo que ya esta creado, las bases probablemente se conviertan en tablas para poder unificar datos comunes y (en los accesos externos de las emisoras) filtrando el acceso por código de emisora solo obtendrá acceso a sus datos, los archivos externos (para importar/exportar) podrán estar en diferentes carpetas (una por emisora) con su correspondiente contraseña que evitara manipulaciones no deseadas.

Si el problema a solucionar fuera sobre la tecnología de las emisoras podría aportar ideas, sobre la gestión interna de la programación (control de anuncios, música y noticias adecuadas al horario, temas en función de la hora en atención a 'las orejas sensibles') así como las relaciones con la sociedad de autores no lo domino, pero lo trataría como lo que en esencia es: la fabricación de un producto (el producto: cada una de las horas de emisión).

Gracias una vez más, lo que no entiendo es de donde extraería el " EAJ44", de una tabla? de la consulta?  

Si desea podemos obviar el hilo anterior porque no me di cuenta que esa tabla no se importa al consolidador, esto que le detallo a continuación si, le ofrezco disculpas. Siendo el objeto de mi consulta el mismo, o sea, exportar una consulta y que al guardar la exportación lo haga con un nombre que se defina automáticamente ya que esta base de datos la usan 6 clientes y al agrupar las exportaciones se sobre escriben

ASÍ ES COMO IMPORTA EL CONSOLIDADOR

Sub ImpEst_Click()
DoCmd.SetWarnings False
DoCmd.TransferText acImportHTML, , "TEstadistica1", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\01 Estadistica1 RMA.html", True
DoCmd.TransferText acImportHTML, , "TEstadistica2", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\02 Estadistica2 RMA.html", True
DoCmd.TransferText acImportHTML, , "TEstadistica3", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\03 Estadistica3 RMA.html", True
DoCmd.TransferText acImportHTML, , "TEstadistica4", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\04 Estadistica4 RMA.html", True
DoCmd.TransferText acImportHTML, , "TEstadistica5", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\05 Estadistica5 RMA.html", True
DoCmd.TransferText acImportHTML, , "TEstadistica6", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\06 Estadistica6 RMA.html", True
DoCmd.TransferText acImportHTML, , "TEstadistica7", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\07 Estadistica7 RMA.html", True
End Sub

Y ESTA ES LA EXPORTACIÓN DE LA CONSULTA DE LA EMISORA, QUE COMO PUEDE VER LO HACE EN HTML

Private Sub ExpEst_Click()
On Error GoTo ExpEst_Err

DoCmd.OutputTo acOutputQuery, "Estadistica1", "HTML(*.html)", "D:\SG RADIO RMA\EXPORTACIONES\01 Estadistica1 RMA.html", False, "", , acExportQualityPrint
DoCmd.OutputTo acOutputQuery, "Estadistica2", "HTML(*.html)", "D:\SG RADIO RMA\EXPORTACIONES\02 Estadistica2 RMA.html", False, "", , acExportQualityPrint
DoCmd.OutputTo acOutputQuery, "Estadistica3", "HTML(*.html)", "D:\SG RADIO RMA\EXPORTACIONES\03 Estadistica3 RMA.html", False, "", , acExportQualityPrint
DoCmd.OutputTo acOutputQuery, "Estadistica4", "HTML(*.html)", "D:\SG RADIO RMA\EXPORTACIONES\04 Estadistica4 RMA.html", False, "", , acExportQualityPrint
DoCmd.OutputTo acOutputQuery, "Estadistica5", "HTML(*.html)", "D:\SG RADIO RMA\EXPORTACIONES\05 Estadistica5 RMA.html", False, "", , acExportQualityPrint
DoCmd.OutputTo acOutputQuery, "Estadistica6", "HTML(*.html)", "D:\SG RADIO RMA\EXPORTACIONES\06 Estadistica6 RMA.html", False, "", , acExportQualityPrint
DoCmd.OutputTo acOutputQuery, "Estadistica7", "HTML(*.html)", "D:\SG RADIO RMA\EXPORTACIONES\07 Estadistica7 RMA.html", False, "", , acExportQualityPrint
ExpEst_Exit:
Exit Sub

ExpEst_Err:
MsgBox Error$
Resume ExpEst_Exit

End Sub

Como puede apreciar todo estaba condicionado por las siglas de las emisoras introducidas manualmente por mi en el VBA. Ahora en este nuevo contexto que le expliqué es que entonces necesito alguna automatización para los dos pasos, exportación e importación para que sea esta quien nombre las exportaciones y que la importación lo acepte así de ese modo. 

Gracias por ser tan atento 

Aunque ahora me doy cuenta que en la primera preguntas, con los códigos que construyen la tabla en Excel igual deben salir con un nombre especifico para diferenciarlas unas de otras

Asumiendo que cada país tiene sus normas, presupongo que Cuba sigue las normas internacionales para el reparto de frecuencias, por lo que cada estación de radio tendrá un código (sea cual sea el nombre que adopte) asignado por el departamento de comunicaciones de su país que la identifica en el espectro radioeléctrico, el código EAJ44 (que es ficticio) lo tome de una emisora local (una de las emisoras de mi ciudad que lo repetía una y otra vez acompañado de su nombre comercial, un recuerdo de la infancia).

Si has creado tu propio identificador: es tu aplicación y tu aplicas las normas, se guarda el código en la tabla en la que también estará la frecuencia en que emite, potencia ... etc. y se utiliza como ID.

Te adjunto un par de rutinas que permitirán aumentar el número de emisoras variando un único dato (el valor del bucle), pero para hacer lo mismo con las consultas lo más sencillo sería crear un informe que en principio no tendría condiciones, estas se le asignarían en tiempo de ejecución y a continuación se ejecuta la exportación.

Sub ImpEst_Click()
Dim Ruta$, Bucle&
Ruta = "D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\"
DoCmd.SetWarnings False
For Bucle = 1 To 7
DoCmd.TransferText acImportHTML, , "TEstadistica" & Bucle, Ruta & Format(Bucle, "00") & " Estadistica" & Bucle & " RMA.html", True
Next Bucle
End Sub

Private Sub ExpEst_Click()
Dim Bucle&
For Bucle = 1 To 7
DoCmd.OutputTo acOutputQuery, "Estadistica" & Bucle, "HTML(*.html)", "D:\SG RADIO RMA\EXPORTACIONES\" & Format(Bucle, "00") & " Estadistica" & Bucle & " RMA.html", False, "", , acExportQualityPrint
End Sub

amigo Enrique, probé la exportación pero me daba Error de compilación, For sin Next, perdona, realmente soy aprendiz de programador en Access y no entendí lo del bucle, o sea, creo que te refieres a que use un Id para la tabla Emisora que sea un código específico en vez de se un autonúmerico y que use ese id para hacer el bucle, es lo que entiendo.

Entonces debo usar ese Id dentro de la consulta que exporto? y si es así, como se identifica como que ese es el bucle?

Es cierto falta el Next en ese bucle (al copiar al mensaje del hilo, se quedo en el tintero).

Como se obtenga el ID (con datos reales, con datos generados automáticamente o utilizando los apellidos de los usuarios) es indiferente siempre que sea único en el conjunto y adecuado al propósito.

Utilizar un dato que además de conocerlo el programador tenga mas utilidad hará mas sencillo el localizar problemas y aplicar soluciones.

Plantéatelo así:

Tu puedes asignar un numero a cada usuario de la aplicación, pero si asignas (en lugar del numero asignado en automático o a capricho), el de su cedula de identificación (DNI, pasaporte o lo que se aplique en el país), además de ser tan valido como el numero, será valido a la hora de cruzar datos con otras aplicaciones.
Sea cual sea, si 'cumpla su función correctamente' lo hace perfectamente valido.

Un bucle es un proceso que se repite continuamente y que puede tener un final o ser infinito.
Un reloj cuenta el tiempo en un bucle incremental infinito,
El reparto de bocadillos a los excursionistas es un bucle que comienza con la entrega al primer excursionista y finaliza al llegar al ultimo (y ese 'ultimo' puede ser el ultimo excursionista o el ultimo bocadillo y si se tienen los datos correctos, coincidirán ambos).

Hay diferentes métodos para crear bucles y los que son finitos acostumbran a tener una condición que finalizara el bucle cuando se cumpla, sobre ello hay abundante literatura que no 'es Access' es universal y cada entorno de programación utiliza la teoría para obtener el mejor resultado con los medios de que dispone.

Para acciones repetitivas el bucle facilita la programación, pues (como en este caso) en lugar de escribir siete veces lo mismo con ligeras modificaciones, lo hace una vez y en cada paso del bucle aplica las condiciones adecuadas.
A la hora de modificar el proceso (sea para siete o setecientos), se cambia una vez y se ahorra el esfuerzo de hacerlo las seis restantes (o las seiscientas noventa y nueve).

Creo (es mi opinión) que si bien has logrado que funcione tu aplicación, no tienes un planteamiento claro de las modificaciones para que la aplicación crezca sin convertirse en un monstruo ingobernable.

Analiza los procesos que has creado (para optimizarlos) y no serias el primero que inicia una nueva aplicación en la que reutiliza partes de la actual y reconstruye el resto aplicando la experiencia adquirida (y la que se obtiene tras ir resolviendo los problemas que suelen surgir)

El procedimiento con el bucle completo:

Private Sub ExpEst_Click()
Dim Bucle&
For Bucle = 1 To 7
 DoCmd.OutputTo acOutputQuery, "Estadistica" & Bucle, "HTML(*.html)", "D:\SG RADIO RMA\EXPORTACIONES\" & Format(Bucle, "00") & " Estadistica" & Bucle & " RMA.html", False, "", , acExportQualityPrint
 Next Bucle
End Sub

Notas:
.-  Dim Bucle& <<<====>>>> Dim Bucle as Long  (son equivalentes)

Se cumple para cada paso del bucle 
"Estadistica" & Bucle   genera:

En el paso 1 ==> "Estadistica1" 
En el paso 2 ==> "Estadistica2" 

.....

La función FORMAT(Bucle."00") genera:

En el paso 1 del bucle  ==> 01
En el paso 2 del bucle ==> 02

...(Si sobrepasa lo 99 comienza en 00 y si se añaden ceros a la mascara, con tres alcanza los 999, con cuatro los 9999...)

Hola amigo, lo que sucede es que si se lo que quiero, solo que no encuentro la manera de hacerlo, antes de leer su respuesta ahora ya había preparado las exportaciones con el formato de fecha_hora pero es que realmente eso no es lo que quiero. Al principio del hilo le decía que yo habilité 6 bases de datos distintas con los nombres o siglas de cada una, que cada cuál exportaba su información a la emisora matriz y esta consolidaba la información de todas porque, igualmente programe el consolidador para que recibiera las exportaciones "nombradas" por cada emisora, quiere decir que la exportación de la "Estadistica1" de Radio Manatí llevaba el nombre: "01 Estadistica1 RMA.html"

Ahora lo que quiero es hacer una sola base de datos para cualquiera que la desee usar, sin tener que personalizar las exportaciones y las importaciones. Que ella, de alguna manera, logre poner un identificador a las exportaciones que pudiera bien ser las siglas de la emisora (RMA, RV, BMB) o el indicativo de la misma. Eso es lo que busco y lo tengo bien definido. Ma falta el conocimiento para llegar a ello. Gracias amigo

Por eso es que le preguntaba si se puede definir que obtenga ese dado del nomenclador de emisora por ejemplo

Si lo tienes claro, solo has de facilitar datos concretos para poder crear la metodología.

A la pregunta de como obtener los datos:

Las 'propiedades' de las emisoras pueden reflejarse en una tabla, sea el ID que se le asigna, nombre comercial, código de emisora, la ruta de sus datos externos, área que cubre, dirección, correo-e, nombre del gestor ... incluso un campo para numerar correlativamente la documentación intercambiada.

Las tablas admiten mas de doscientos campos y mediante consultas se pueden obtener únicamente los que se precisen para cada necesidad.

A la hora de generar información (individual o en bucle) se utiliza la tabla o una consulta sobre ella como origen de datos para un recordset y se recorren los registros (o el registro) obteniendo los datos guardados en cada campo para asignarlos donde corresponda

Esto es, estando en el registro de la emisora (1) el nombre estara en el campo nombre, el indicativo en el de matricula, su identificador fiscal en el campo que corresponda, su correo-e, incluso el nombre del responsable al que se envía la información.

Procesado ese registro se avanza al siguiente y se repite el ciclo mientras no se llegue al final del recordset (que daria por finalizado el bucle).

No se si eso aclara la duda de como obtener los datos individuales de cada emisora.

Hola, bueno, lo que necesito es que, por ejemplo, la exportación de la consulta Estadistica1 a html se nombre, ejemplo: 1008 Estadistica1.html, o sea, con el IdEmisora presente en la consulta, que viene de la tabla Nomenclador de emisoras, para que de esta forma al llenar el IdEmisora en el nomenclador de cualquier base de datos las exportaciones sean diferenciadas por este campo. Puede ser? Gracias por darme tu tiempo Enrique

El nombre del 'archivo de salida' es una cadena de texto, se puede construir sin mayor problema.

Si hay una tabla [nomenclador de emisoras] que tiene el dato con el que se desea iniciar el nombre, se necesita saber como se llama el campo que lo contiene (la tabla es la que se referencio antes) y cual es el ID a localizar en la tabla, con esos datos la funcion de dominio DLookup lo puede obtener.

DLookup devuelve el valor de un campo de una tabla (o consulta), si no se le indica nada devuelve el primero, si se desea uno especifico, se le utiliza como condición.

Suponiendo que el ID es el uno (1) que la tabla se llama [nomenclatos de emisoras] y el campo con el dato (1008) se llama NOMBRE, para obtener '1008 Estadistica1.html':

DLookup("[Nombre]", "[nomenclator de emisoras]";"ID = 1") & " Estadistica1.html"

Si se ha creado una consulta para cada emisora y se crean individualmente las exportaciones existe una enorme dependencia (los datos serian una constante) y estamos nuevamente en el punto de partida.

Utilizar el DLookup solo tiene sentido si se utiliza un bucle para hacer la exportación y en cada vuelta del bucle se cambia la consulta a la vez que se regenera el nombre del archivo y (solo a titulo de curiosidad) el nombre final no seria mas correcto así: '1008 Estadistica.html' (sin el numero, que solo se precisa para diferenciar el origen, el destino no lo requiere, los diferencia el dato obtenido de la tabla 'nomenclator de emisoras').

Voy a teorizar un poco.

Disponemos de una tabla con los datos de la emisora (abreviado, la tabla se llama 'nomenclator'), en ella un campo tiene un dato único de cada emisora y se llama NOMBRE, el nombre de la consulta (el origen de datos a exportar) esta en el campo [TXT_Nombre].

El proceso para automatizar la exportacion:

Se abre un recordset basado en la tabla NOMENCLATOR, se toman los campos NOMBRE y TXT_NOMBRE, nos desplazamos al primer registro e iniciamos un bucle que los recorre uno a uno hasta el final, exportando la consulta (es solo un ejemplo)

Private Sub ExpEst_Click()
Dim Tbl_Temp As DAO.Recordset
Set Tbl_Temp = CurrentDb.OpenRecordset("Select Nombre, TXT_Nombre From NOMENCLATOR", , dbReadOnly)
Tbl_Temp.MoveFirst
Do Until Tbl_Temp.EOF
   DoCmd.OutputTo acOutputQuery, Tbl_Temp!TXT_Nombre, "HTML(*.html)", "D:\SG RADIO RMA\EXPORTACIONES\" & Tbl_Temp!Nombre & " Estadistica.html", False, "", , acExportQualityPrint
   Tbl_Temp.MoveNext
   Loop
Tbl_Temp.Close
Set Tbl_Temp = Nothing
End Sub

Recorre la tabla llamado a la consulta cuyo nombre figura en el campo TXT_NOMBRE, genera un archivo en la ruta (he reutilizado un dato publicado) con el nombre que figure en el campo NOMBRE (sea '1008', 'Radio Arbol'  o 'KLM755') mas ' Estadísticas' y formato HTML como tipo de fichero.

Amigo, para no hacerlo más difícíl le voy a dar mas datos porque de lo contrario no terminamos y me parece que abuso de su paciencia
Prové el código que me mandó y no me funciona, no se si hice algún paso mal, lo hice así:
___
Private Sub ExpEst_Click()
Dim Tbl_Temp As DAO.Recordset
Set Tbl_Temp = CurrentDb.OpenRecordset("Select CodEmisora, Estadistica1 From 01T Nomenclador Emisora", , dbReadOnly)
Tbl_Temp.MoveFirst
Do Until Tbl_Temp.EOF
DoCmd.OutputTo acOutputQuery, Tbl_Temp!Estadistica1, "HTML(*.html)", "D:\SG RADIO\EXPORTACIONES\" & Tbl_Temp!CodEmisora & " Estadistica1.html", False, "", , acExportQualityPrint
Tbl_Temp.MoveNext
Loop
Tbl_Temp.Close
Set Tbl_Temp = Nothing
End Sub
___

Estos son los datos

Tabla de donde debe salir el codigo a poner delante de la exportación (CodEmisora)

01T Nomenclador emisora

Campos que contiene

Campo Tipo de datos Valores de los campos
IdEmisora autonumérico 1
CodEmisora número 1008
Emisora texto corto Radio Maboas
Organismo texto corto ICRT
CoordMusica texto corto "fulano"

Consulta que se va a exportar

Estadistica1 (lleva ese nombre porque son 7 consultas, de la 1 a la 7, las que van obteniendo datos distintos, de varias tablas, para al fnal construir un informe general que se llama Modelo Clasico.Quiero decir que exporto las 7 consultas, por eso numerarlas)

Campos que contiene

SELECT [01T Nomenclador emisora].CodEmisora, [CI ObrasZonaGeograficaCuba].CantObras, [CI ObrasZonaGeograficaExt].CantObras, [CI AutoresZonaGeograficaCuba].CantAut, [CI AutoresZonaGeograficaExt].CantAut, [CI InterpZonaGeograficaCuba].CantInt, [CI InterpZonaGeograficaExt].CantInt
FROM [CI ObrasZonaGeograficaCuba], [CI ObrasZonaGeograficaExt], [CI AutoresZonaGeograficaCuba], [CI AutoresZonaGeograficaExt], [CI InterpZonaGeograficaCuba], [CI InterpZonaGeograficaExt], [01T Nomenclador emisora];

Al exportar esas consultas:
Estadistica1
Estadistica2
Estadistica3
Estadistica4
Estadistica5
Estadistica6
Estadistica7

Es que necesito que cada una lleve delante el CodEmisora ejemplo: 1008 Estadistica1.html, 1008 Estadistica2.html y así sucesivamente

Usred me dice esto: "Si se ha creado una consulta para cada emisora y se crean individualmente las exportaciones existe una enorme dependencia (los datos serian una constante) y estamos nuevamente en el punto de partida."
y le vuelvo a explicar que no hice una consulta para cada emisora, si no que en ese momento me era más sencillo, y hasta donde alcanzaban mis conocimientos, hice 6 bases de datos, una para cada emisora, que en sus exportaciones hacía mención a la emisora, ejemplo real: 01 Estadistica1 RCB.html (Radio Cabaniguan), 01 Estadistica1 RV.html (Radio Victoria) y preparé el consolidador para que así igualmente importara esos datos con la referencia estatica de cada emisora, ejemplo de una emisora (y así lo hice con todas):

Sub ImpEst_Click()
DoCmd.SetWarnings False
DoCmd.TransferText acImportHTML, , "TEstadistica1", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\01 Estadistica1 RMA.html", True
DoCmd.TransferText acImportHTML, , "TEstadistica2", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\02 Estadistica2 RMA.html", True
DoCmd.TransferText acImportHTML, , "TEstadistica3", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\03 Estadistica3 RMA.html", True
DoCmd.TransferText acImportHTML, , "TEstadistica4", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\04 Estadistica4 RMA.html", True
DoCmd.TransferText acImportHTML, , "TEstadistica5", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\05 Estadistica5 RMA.html", True
DoCmd.TransferText acImportHTML, , "TEstadistica6", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\06 Estadistica6 RMA.html", True
DoCmd.TransferText acImportHTML, , "TEstadistica7", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\07 Estadistica7 RMA.html", True
End Sub

Y le recuerdo que cuando me ayude con esta tarea entonces el consolidador, aunque a la carpeta EXPORTACIONES RECIBIDA se copien todas las exportaciones con el nuevo nombre 1008 Estadistica1.html, debe obviar el "1008" o cualquier otro código "1001" o "1002" y solo utilizar Estadistica1.html, Estadistica2.html, ect, porque de lo contrario caería otra vez en tener que teclear todos los códigos de cada emisora y que, de utilizarse como se piensa, en emisoras de todo el país, sería super engorroso y no le daría independencia al sotware.
Usted me ha hablado varias veces de datos específicos de las emisoras, que no utilizo, porque mi profesión es representante de la Agencia Cubana de Derecho de Autor Musical, y lo que gestionamos en la radio es lautilización de la música para el pago a los autores musicales, tuve la idea de haces el programa porque todo eso se hacía manual, en papel, un modelo por programa emitido, y además le colaboré a los amigos de la radio de mi provincia a que desde ahí mismo se tuviera la información que ellos utilizan para sus labores. Como tuvo aceptación y se lo hicieron saber a mi manager entonces es que ha surgido la idea de difundirlo an toda Cuba, que no se si al final se haga, que espero que si, pero de todas formas he aprendido cosas nuevas que me sirven en el futuro para otror emprendimientos.
Espero no agobiar a un amigo de la Madre Patria, saludos desde Cuba.

Error por mi parte el creer que las emisoras solo generaban un informe (consulta ==> informe) y no siete informes independientes.

Pregunta: ¿Cómo se consolidan los datos importados?:

.- Por tipo (todas las emisoras en la misma tabla, las diferencia un campo clave)
.- Una tabla por tipo + emisora

Si es el primer caso propongo lo siguiente:
Añadir en cada consulta un campo mas (el CODEMISORA) que se puede obtener con una función muy simple (si la aplicación esta compilada, se añade una tabla con un único registro).

Con ello ya no se precisa que aparezca en el titulo la referencia a la emisora pues esta va incluida en los datos.

Supuesto uno: se dispone de una tabla de la cual extraer la referencia a la emisora:

En un modulo independiente (o uno ya existente) con una función se obtiene el CodEmisora:

Public Function Referencia() As Long
Referencia = DLookup ("CodEmisora", "[nombre de la tabla]")
End Function

A las consultas actuales se les añade el dato, para lo que se edita la consulta actual y en una columna disponible se escribe:

CodEmisora:Referencia()

Aparecerá en cada registro de la consulta el dato que devuelve la función por lo que ya no es imprescindible que el fichero exportado lo lleve al inicio del titulo.
Si el dato lo ponemos al final, permitirá procesar todos los ficheros sin importar que emisora los envió.
Resumen:

Añadir la emisora en la exportación (como un dato mas)
Añadir al titulo el código de emisora al final:
Antes ===>>> 1008 Estadistica1.html
Después ===>>> Estadistica1 1008.html
Con la finalidad de que puedan compartir la misma carpeta las importaciones de todas las emisoras y sus respectivas consultas

hola amigo, de nuevo Cuba por acá, esto no lo entiendo:

___

Añadir la emisora en la exportación (como un dato mas)
Añadir al titulo el código de emisora al final:
Antes ===>>> 1008 Estadistica1.html
Después ===>>> Estadistica1 1008.html
Con la finalidad de que puedan compartir la misma carpeta las importaciones de todas las emisoras y sus respectivas consultas

___

Si es cierto que incluye en la exportación el CodEmisora no lo pone en la exportación, quiero decir meque sigue exportando la consulta con el nombre Estadistica1.html, y a la hora de consolidarlas en la carpeta EXPORTACIONES RECIBIDAS, donde se agrupan todas las exportaciones de las 1,2 , 3 o 10 emisoras, entonces se van a sobre escribir porque no las diferencia nada

o sea no lo pone en el nombre de la exportación

Si es cierto que incluye en la exportación el CodEmisora no lo pone en el nombre de la exportación, quiere decir que sigue exportando la consulta con el nombre Estadistica1.html, y a la hora de consolidarlas en la carpeta EXPORTACIONES RECIBIDAS, donde se agrupan todas las exportaciones de las 1,2 , 3 o 10 emisoras, entonces se van a sobre escribir porque no las diferencia nada, el formulario de importación está concebido para que borres datos de las tablas al abrirse y así reciba una importación limpia. 

Entiendo que no puedas aportar muchos datos de de tu diseño (aunque lo 'no publicable' suelen ser los datos (el contenido) no el contenedor (la aplicación o estructura).

Tu conoces el diseño, desde la distancia tengo que imaginarlo y con el problema añadido de que muy probablemente yo aplicaría otra metodología.

--------------------------------------------

Te voy a describir mi visión sobre el tema:

Proyecto: obtener de diversos orígenes (sean emisoras de radio o sucursales de un banco o una cadena de supermercados) una serie de datos que me permitan analizar la globalidad de la empresa y ello manteniendo la integridad de los datos y la posibilidad de comparar los diferentes orígenes o un nuevo uso.

Los datos se procesan (en cada origen) en grupos (consultas) una para contabilidad, otra de compras, otra de ventas y otra de ofertas (que se llamen ‘estadistica1’, ‘estadistica2’ etc. es indiferente)

La consulta1 tiene diez campos y para poder automatizar el proceso se añade un campo más, el nombre del origen (se repite para todos los registros)
Se hace lo mismo en cada consulta (añadir un campo con el origen sea numérico o texto, el de una emisora o de una sucursal bancaria).

Al fichero resultante se le denomina con el nombre de la consulta y añade el origen (vale el mismo dato que se añadió al nuevo campo), este dato se le añade al final (el dato extra permite enviarlo a una carpeta común para procesarlos o consolidarlos)
Tenemos pues en la carpeta común una serie de ficheros con nombres que no se repiten:
Estadistica1 OrigenA.Html
Estadistica1 OrigenB.Html
Estadistica1 OrigenC.Html
Estadistica1 OrigenD.Html
Estadistica2 OrigenA.Html
Estadistica2 OrigenB.Html
Estadistica2 OrigenC.Html
Estadistica2 OrigenD.Html
... mas ...

Los ficheros están en la carpeta:  "D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\"

Vamos a procesarlos:

Dim NFic As Long, Temp_Nombre as String, Temp_Destino as String, Const_Ubicacion As String
Const_Ubicacion = "D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\”
For NFic = 1 to 7
   Temp_Destino = “TEstadistica” & NFic
   Temp_Nombre = Dir(Const_Ubicacion & “Estadistica” & Nfic & “*.Html”
   Do
      If Nfic =”” Then Exit Do
      DoCmd.TransferText acImportHTML, , Temp_ Destino, Const_Ubicacion & Temp_Nombre, True
      Temp_Nombre = Dir
      Loop
   Next NFic

Con un solo click se han procesado todos los ficheros de esa carpeta (solo le falta un botón para ejecutarlo)

Si esto te parece interesante continuamos y si tienes alguna duda sobre como aplico la función DIR las aclaramos

estuve probando esto:

Dim Tbl_Temp As DAO.Recordset
Set Tbl_Temp = CurrentDb.OpenRecordset("Select CodEmisora, Estadistica1 From 01T Nomenclador Emisora", , dbReadOnly)
Tbl_Temp.MoveFirst
Do Until Tbl_Temp.EOF
DoCmd.OutputTo acOutputQuery, Tbl_Temp!Estadistica1, "HTML(*.html)", "D:\SG RADIO\EXPORTACIONES\" & Tbl_Temp!CodEmisora & " Estadistica1.html", False, "", , acExportQualityPrint
Tbl_Temp.MoveNext
Loop
Tbl_Temp.Close
Set Tbl_Temp = Nothing
End Sub

Y al ejecutarlo me da error de sintaxis en la cláusula From

Aún no he logrado que me exporte la consulta Estadística1 con el campo CodEmisora, de la tabla Nomenclador Emisora en el nombre de la exportación

yo sustituí los datos que usted me envío por los que pienso que deben ir:

Disponemos de una tabla con los datos de la emisora (abreviado, la tabla se llama 'nomenclator'), en ella un campo tiene un dato único de cada emisora y se llama NOMBRE, el nombre de la consulta (el origen de datos a exportar) esta en el campo [TXT_Nombre].
___
Disponemos de una tabla con los datos de la emisora (abreviado, la tabla se llama '01T Nomenclador Emisora'), en ella un campo tiene un dato único de cada emisora y se llama CodEmisora, el nombre de la consulta (el origen de datos a exportar) esta en el campo [Estadistica1].

me quedó así

Private Sub Comando107_Click()
Dim Tbl_Temp As DAO.Recordset
Set Tbl_Temp = CurrentDb.OpenRecordset("Select CodEmisora, [Estadistica1] From 01T Nomenclador Emisora", , dbReadOnly)
Tbl_Temp.MoveFirst
Do Until Tbl_Temp.EOF
DoCmd.OutputTo acOutputQuery, Tbl_Temp![Estadistica1], "HTML(*.html)", "D:\SG RADIO\EXPORTACIONES\" & Tbl_Temp!CodEmisora & " Estadistica1.html", False, "", , acExportQualityPrint
Tbl_Temp.MoveNext
Loop
Tbl_Temp.Close
Set Tbl_Temp = Nothing
End Sub

Pero al ejecutarlo me da error de sintaxis en la cláusula From

Antes de pasar a otro punto debo lograr que me diferencie las exportaciones y luego pensar en importarlas obviando esas diferencias del CodEmisora.

Una vez mas gracias Enrique

para no hacerle perder mas tiempo vamos a suponer que son dos bases de datos distintas, con necesidad de exportar las 7 tablas, Estadistica1 a Estadistica 7, que los códigos de emisora de cada una es 1001 y 1008, que salen de la tabla 01T Nomenclador Emisora.

que esas 14 tablas se van a copiar a la carpeta EXPORTACIONES RECIBIDAS de la base de datos consolidador y por lo tanto no deben sobre escribirse unas con otras pues tienen datos distintos, esas exportaciones van a las tablas Estadisticas1 a Estadística7 de la base de datos consolidador y luego desde ellas se hacen los reportes necesarios para la información final pero el consolidador debe obviar el dato de CodEmisora presente es las tablas que va a importar, ejemplo: 1001 Estadistica1.html, 1001 Estadistica2.html..... 1008 Estadística1.html, 1008 Estadística2.html (en cualquier posición que se le designe en el nombre de la exportación delante de Estadistica o detrás),  porque no los va a usar, ya que en ella solo se necesitan los datos de las consultas, pues es un resumen lo que se hace de temas musicales, autores, intérpretes, países, etc, de todas las emisoras de la provincia, la información específica de cada emisora sale en otros archivos .pdf y que si son necesarios se consultan. 

No se si esta vez he sido más explícito en mi objetivo a alcanzar

Lo primero e indispensable es respetar las regla que impone Access y es: los nombres de los objetos y variables NO PUEDEN contener espacios.
(Access considerara a la primera palabra como el nombre, ignorando el resto)

Esto:
Set Tbl_Temp = CurrentDb.OpenRecordset("Select CodEmisora, Estadistica1 From 01T Nomenclador Emisora", , dbReadOnly)

Podría funcionar si el nombre se encierra entre corchetes:

Set Tbl_Temp = CurrentDb.OpenRecordset("Select CodEmisora, Estadistica1 From [01T Nomenclador Emisora]", , dbReadOnly)

La modificiacion: 01T Nomenclador Emisora ===> [01T Nomenclador Emisora] 
También seria valido concatenar con el guion bajo para cumplir la regla de no contener espacios: 01T_Nomenclador_Emisora (en algunas condiciones)

(Y ahora a leer el resto)

Aprecio que la función para obtener un dato de una tabla (o devolver una constante) fue ignorado.

¿Cómo creas las consultas)? Di por supuesto que se utilizaba el generador grafico incorporado en Access y aporte un ejemplo de como añadir un dato (columna, valor campo ..) y asignarle el dato que devuelve la función.

Si dominas el lenguaje SQL no necesitarías ejemplos...

(Continuo leyendo)

Modifica el nombre de la tabla (y de los campos que tengan la misma construcción)

Son datos internos, y han de cumplir las condiciones que impone Access, la estética solo en el producto final.
(Asocia que la consulta es 'una olla con el guiso' y no el plato que se presenta en la mesa).

Sobre el campo añadido ... si se elimina se pierde la integridad de los datos (puede asumirse).

Sin esa integridad ¿Qué impide que se importen varias veces los mismos ficheros? ..

Aclarando: Tabla ====>>>> Contenedor de datos

Consulta: Conjunto de datos procedente de:
.- Una tabla
.- Parte de una tabla
.- De mas de una tabla (o de partes de varias tablas)

En cualquier caso se debe de cumplir que existe (o se tiene que crear) una relación entre los diferentes orígenes.

.-- Las consultas se comportan a todos los efectos como:
1.- Tablas (en modo lectura).
2.- En modo escritura (añadir registros,/modificar los existentes) han de cumplir con las condiciones mas restrictivas de la relación de esos datos y poder definir con absoluta precisión el dato o datos a modificar, Access no permitirá romper las reglas de la integridad de los datos que maneja.

Pregunta: ¿Qué importa un campo mas que se puede ignorar a voluntad?

(En el entorno mas extremo, se crea una nueva consulta basada en la anterior consulta y solo con parte de los campos y ... problema solucionado para esa situación concreta).

Tendras que aceptar cambios que permitan adaptar lo ya creado al nuevo entorno y (personalmente) creo que las modificaciones propuestas son mínimas y poco invasivas (al menos con los datos expuestos).

a ver amigo, siempre he dicho que no soy ni siquiera aprendiz, hace muchos años hago cosas en access debido a que tuve un compañero que me instruyó, nunc he obtenido ni un curso, he ido aprendiendo de aquí y de allá, googleando, y en las páginas de los foros, siempre adaptando lo que encuentro a mis necesidades y así

nidifiqué los nombres de tablas, al volver a plantear

Private Sub Comando107_Click()
Dim Tbl_Temp As DAO.Recordset
Set Tbl_Temp = CurrentDb.OpenRecordset("Select CodEmisora, Estadistica1 FROM 01TNomencladorEmisora", , dbReadOnly)
Tbl_Temp.MoveFirst
Do Until Tbl_Temp.EOF
DoCmd.OutputTo acOutputQuery, Tbl_Temp!Estadistica1, "HTML(*.html)", "D:\SG RADIO\EXPORTACIONES\" & Tbl_Temp!CodEmisora & " Estadistica1.html", False, "", , acExportQualityPrint
Tbl_Temp.MoveNext
Loop
Tbl_Temp.Close
Set Tbl_Temp = Nothing
End Sub

es esta línea

Set Tbl_Temp = CurrentDb.OpenRecordset("Select CodEmisora, Estadistica1 FROM 01TNomencladorEmisora", , dbReadOnly)

me dice pocos parámetros: se esperaba 1

Hay quien aprende solo con la ayuda incorporada (también se la conoce como 'la biblia'), entiendo ahora lo complicado que es para ti el cambiar una simple coma.

Tendré que felicitarte por haber logrado algo funcional con tan poca base (aunque no seas el único, conozco mas casos), pero no basta con copiar y pegar hay que entender como funcionan las cosas para poder avanzar.

Localiza a tu amigo o a otro que te pueda colaborar de forma presencial a adecuar la actual aplicación a la nueva versión con mas funcionalidad, corres el peligro de que alguien la analice, aplique mejoras (basadas en la idea original) y desplace tu aplicación.

Respondiendo la ultima cuestión planteada:

¿Cómo has creado la consulta? (Con el asistente de Access no lo parece)

Para poder dar una respuesta necesito conocer la tabla (una copia de la pantalla con la 'foto' del diseño).
El error puede estar en cualquier parte (y se necesita una referencia fiel para poder comparar).

Haz una copia de la pantalla (en el teclado hay una opción para ello) y recorta de la imagen aquello que no 'sea Access', tras ello la adjuntas en un mensaje y continuamos.

Por cierto, si se le solicita a Access un dato que no existe (un valor NULL) devolverá un mensaje muy parecido al que has publicado.

esta es la tabla 01TNomenclador

Emisora

las consultas las cree porque en eso hemos aprendido algo, esta es Estadistica1

y en cuanto al amigo, hace años emigró a EEUU

No creo que la distancia para contactar con el amigo sea un problema (la distancia que nos separa es mucho mayor).

-----------------------------------

En la tabla ‘Emisora’ hay dos datos que (funcionalmente) hacen lo mismo, IdEmisora (un entero largo) y CodEmisora (numérico).

Dando por sentado que el dato CodEmisora no se repite ¿porque no elevarlo a la categoría de campo llave y desaparece IDEmisora (ID es un concepto, un dato que es único en el conjunto y lo diferencia) conocido el ID de cualquier tabla, se obtiene el resto de datos de su registro y también los relacionados.

-----------------------------------------

Creo que ese concepto de consulta es discutible, debe de retornar muchos datos y de ellos más de la mitad inventados (pero si a ti te vale, nada que objetar).

En esa tabla se puede añadir una función de dominio (DLookup) para que retorne el ID de la emisora (el campo CodEmisora de la tabla Emisora).

En la ultima columna tienes è CodEmisora: ¿Referen?
Cambialo a : CodEmisora: DLookup(“CodEmisora”; “Emisora”)

Devolverá el valor del campo CodEmisora del primer registro que encuentre en esa tabla (y como solo tendrá uno pues no necesita mas ...)

Añade ese campo en todas las tablas de consolidación (sabrá de donde se obtiene el dato y si se le pone un índice único, no permitirá repetir el mismo dato de la misma emisora).

---------------------------------------------------------------

Respecto a la consulta:

Se le solicita que retorne dos datos (CodEmisora) y (Estadistica1) de la tabla 01TNomencladorEmisora

¿La tabla no se llama ahora EMISORA?

En la tabla EMISORA sí existe un campo denominado CODEMISORA pero no aprecio que exista uno cuyo nombre sea ESTADISTICA1 ... es normal que devuelva error (aunque el error sea genérico y no especifique nada concreto)

Si existe una tabla de nombre 01TNOMENCLADOREMISORA, no la has publicado por lo que no se puede saber que campos tiene.

Me he liado (si existe la tabla de Nombre 01TNomenclador) pero no 01TNomencladorEmisora que es la que se utiliza en la SQL.

(Creí que se le cambio a 'Emisora' como aparece en el pie, pero el resto sigue siendo correcto, no existe el campo 'Estadistica1')

Actualiza esto:

En la ultima columna tienes è CodEmisora: ¿Referen?

Cambialo a ===>>>  CodEmisora: DLookup(“CodEmisora”; “01TNomenclador”)

al corregir los datos aquí:

Private Sub Comando107_Click()
Dim Tbl_Temp As DAO.Recordset
Set Tbl_Temp = CurrentDb.OpenRecordset("Select CodEmisora FROM 01TNomencladorEmisora", , dbReadOnly)
Tbl_Temp.MoveFirst
Do Until Tbl_Temp.EOF
DoCmd.OutputTo acOutputQuery, Tbl_Temp!CodEmisora, "HTML(*.html)", "D:\SG RADIO\EXPORTACIONES\" & Tbl_Temp!CodEmisora & " Estadistica1.html", False, "", , acExportQualityPrint
Tbl_Temp.MoveNext
Loop
Tbl_Temp.Close
Set Tbl_Temp = Nothing
End Sub

Y me da este error

ah y la tabla 01TNomencladorEmisora que usted me dice que no le he mostrado es la primera imagen que le envié donde me recomienda eliminar el IdEmisora y dejar como llave CodEmisora que ya lo hice

amigo, lo acabo de resolver así

Private Sub Comando107_Click()
Dim Tbl_Temp As DAO.Recordset
Set Tbl_Temp = CurrentDb.OpenRecordset("Select CodEmisora FROM 01TNomencladorEmisora", , dbReadOnly)
Tbl_Temp.MoveFirst
Do Until Tbl_Temp.EOF
DoCmd.OutputTo acOutputQuery, "Estadistica1", "HTML(*.html)", "D:\SG RADIO\EXPORTACIONES\" & Tbl_Temp!CodEmisora & " Estadistica1.html", False, "", , acExportQualityPrint
Tbl_Temp.MoveNext
Loop
Tbl_Temp.Close
Set Tbl_Temp = Nothing
End Sub

Y este es el resultado en la carpeta donde hace la exportación

quiere decir esto que solo me falta llegar a que el consolidador importe la esta tabla son considerar el CodEmisora 1008 para que puedan unirse los datos de todas las emisoras a la vez en cada tabla que le corresponde

y entonces, para terminar, sería ver el tema inicial de mi consulta, como esa exportación a excel, de un libro que construye con los datos de la base, igual se puede exportar pero esta vez que en vez de CodEmsiora utilice Emisora porque esa tabla se envía a la Agencia Nacional y desde ella hacen la importación a sus sistema para proceder al pago a los autores musicales reflejados en ella, el código es:

Private Sub cmdExportar_Click()
Dim rstNombrePrograma As DAO.Recordset, _
rstTituloTema As DAO.Recordset, _
qdf As DAO.QueryDef, _
strSQL As String, _
strHoja As String, _
strArchivo As String, _
strTitulo As String, _
Campo As DAO.Field, _
lngColumna As Long, _
i As Long, _
xls As Object 'Excel.Application
Const xlWBATWorksheet = -4167
Const xlAutomatic = -4105
Const xlSolid = 1
Const xlThemeColorDark1 = 1
Const xlToRight = -4161
Const xlNormal = -4143

On Error GoTo cmdExportar_Click_TratamientoErrores

strSQL = "SELECT NombrePrograma"
strSQL = strSQL & " FROM ProgramasEmitidos"
strSQL = strSQL & " GROUP BY NombrePrograma"

Set xls = CreateObject("Excel.Application")
xls.Visible = True

xls.Workbooks.Add xlWBATWorksheet
strHoja = xls.ActiveSheet.Name

Set rstNombrePrograma = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

If Not (rstNombrePrograma.EOF And rstNombrePrograma.BOF) Then
Do
StrSQL = "SELECT TituloTema, NombreAutor, NombreInterprete, Sonatas, Fecha, Calculo, Local, Plantilla "
strSQL = strSQL & "FROM ProgramasEmitidos"
strSQL = strSQL & " WHERE NombrePrograma = Parametro1"
Set qdf = CurrentDb.CreateQueryDef("", strSQL)

Set rstTituloTema = qdf.OpenRecordset
xls.ActiveWorkBook.Sheets.Add Before:=xls.Worksheets(xls.Worksheets.Count)
xls.ActiveSheet.Name = rstNombrePrograma!NombrePrograma
With xls
lngColumna = 1
For Each Campo In rstTituloTema.Fields
strTitulo = ""
For i = 1 To Len(Campo.Name)
strTitulo = strTitulo & Mid(Campo.Name, i, 1)
If i < Len(Campo.Name) Then
If EsMayuscula(Mid(Campo.Name, i + 1, 1)) Then strTitulo = strTitulo & " "
End If
Next i
.ActiveSheet.Cells(1, lngColumna) = strTitulo
lngColumna = lngColumna + 1
Next Campo
.Range("A1").Select
.Range(.Selection, .Selection.End(xlToRight)).Select
.Selection.Font.Bold = True
With .Selection.Interior
.Pattern = xlSolid
.ColorIndex = 15
End With
End With

If Not (rstTituloTema.EOF And rstTituloTema.BOF) Then
xls.ActiveSheet.Cells(2, 1).CopyFromRecordset rstTituloTema
End If
xls.Columns("A:G").EntireColumn.AutoFit
rstNombrePrograma.MoveNext
Loop Until rstNombrePrograma.EOF
End If

xls.Application.DisplayAlerts = False
xls.ActiveWorkBook.Worksheets(strHoja).Delete

strArchivo = "D:\SG RADIO\EXPORTACIONES\11 Derecho Autor Obras Completas.xls"

If Not Nz(strArchivo, "") = "" Then
xls.ActiveWorkBook.SaveAs FileName:=strArchivo, FileFormat:=xlNormal
Else
xls.ActiveWorkBook.Saved = True
End If
xls.Application.DisplayAlerts = True

cmdExportar_Click_Salir:
On Error Resume Next
xls.Quit
Set xls = Nothing
Set qdf = Nothing
CierraRecordsetDAO rstNombrePrograma
CierraRecordsetDAO rstTituloTema
On Error GoTo 0
Exit Sub
cmdExportar_Click_TratamientoErrores:
MsgBox "Error " & Err & " en proc.: cmdExportar_Click de Documento VBA: Form_frmFrmIniInformes (" & Err.Description & ")", vbCritical + vbOKOnly, "ATENCION"
Resume cmdExportar_Click_Salir
Resume Next
End Sub ' cmdExportar

Si ‘Comando107’ te funciona, se acepta: es tu aplicación (pero no aplaudiré esa solución).

El tema del hilo es una exportación de datos con nombre definido y a mayores se han proporcionado ideas para automatizar el proceso, tanto para crear los ficheros con nombres diferentes como para ¿consolidarlos? En su destino.

Si consideras que se alcanzó esa meta, es el momento para finalizar el hilo y si surge otro con otro tema diferente, mejor se inicia un nuevo hilo (este: mejor olvidarlo).

Bueno yo no dije en ningún momento que estaba todo resuelto, antes de su respuesta le pedia me ayudara con la exportación de las tablas de Excel que construye la base de datos igual con el CodEmidora implícito en la exportación.

De paso no entiendo que quiere decir con el comentario sobre el Comando107 y bueno mi última solicitud fue sobre importar los .html, las Estadísticas1 al 7 a la basde de datos consolidados pero que la hacerlo no puede tener en cuenta que se llaman 1008 Estadísticas1 y sólo usar Estadísticas1. No obstante le dejo a su decisión si continua con el hilo o lo cerramos. Ustedes decide

Bueno yo no dije en ningún momento que estaba todo resuelto, antes de su respuesta le pedia me ayudara con la exportación de las tablas de Excel que construye la base de datos igual con el CodEmidsora implícito en la exportación. Le puse el código en la pregunta.

De paso no entiendo que quiere decir con el comentario sobre el Comando107 y bueno mi última solicitud fue sobre importar los .html, las Estadísticas1 al 7 a la base de datos consolidador pero que al hacerlo no puede tener en cuenta que se llaman 1008 Estadísticas1 y sólo usar Estadísticas1. No obstante le dejo a su decisión si continuamos con el hilo o lo cerramos. Ustedes decide. Gracias infinitas por todo su tiempo

Carlos, el hilo es largo y tedioso, en principio publicas esto:

Tengo un botón que al accionarlo exporta una tabla, que se construye con los datos de una consulta, ahora, lo que necesito es que al guardar la exportación lo haga con un nombre que yo defina ya que esta base de datos la usan 6 clientes y al agrupar las exportaciones se sobrescriben.

A continuación un montón de código que no tiene nada que ver con lo que se solicita, pues se trata del nombre de ese objeto (u objetos) para nominarlos no importa el/su contenido.

Se ofrece como alternativa que se añada al nombre del objeto un diferenciador (como ejemplo la hora) de forma que al llevarlos a una carpeta común puedan estar juntos pero no amontonados.

Parece que no cumple con el actual diseño y se propone que (en función de la frecuencia) se utilice la fecha y de ser necesario su parte horaria (se desconoce que se hace con los objetos, si se guardan a modo de histórico o se borran).

Se recibe más información que añade que se trata de emisoras de radio (dato que no aporta nada, estamos hablando del nombre a aplicar a los objetos no de su contenido)

Se propone que se utilice un identificador del origen y (como se trata de emisoras y como emisor de ondas autorizado ha de tener un identificador único en el espectro que utiliza) se propone utilizar el identificador (el nombre comercial es volitivo y puede cambiar libremente) y tampoco es aceptado.

Una aclaración posterior añade que el sistema trabaja y esta tan bien adaptado que lo que en principio se utiliza para unas pocas emisoras locales se desea ampliar a nivel de todo el país.

Al apreciar que ninguna solución se adapta y todo da error, se requiere que muestre datos reales para tener una referencia y la conclusión es que la aplicación no está normalizada.
La consulta (que genera la ‘Estadistica1’) tampoco asume normas, utiliza datos sin relacionarlos y sus orígenes (tablas) solo tienen un campo y (para que los datos devueltos sean fiables) solo pueden tener un registro ya que la combinación de tablas (todas con todas) generaría registros exponencialmente y solo uno seria el valido.

Admito el error de creer que cada emisora generaba su estadística y eran siete emisoras, cuando en la aplicación real cada emisora genera siete estadísticas numeradas de forma correlativa, se aporta la solución de añadir al título del fichero el nombre de la emisora (tampoco parece una solución aceptable)

Publico como veo el entorno y propongo el esquema (mí solución) pero no cuaja y consciente de que los datos están fuera de normas (pero funciona la aplicación) se aconseja que acuda a alguien con experiencia que localmente le auxilie.

Al final parece que logra (tomando trozos de aquí y allá) obtener un nombre que puede solucionar el problema planteado al inicio del hilo y...

Nuevamente aparece algo (que no es el problema inicial) y se trata de la creación de un Excel (que funciona por lo tanto no debería existir el problema).

No tiene sentido crear xxx Excel para luego juntarlos en otro, se juntan los datos (sus orígenes) y se genera un único Excel con ellos (y como el Excel ‘funciona’ solo será más grande, que es el propósito final).

Veras, cuando diseño algo planifico su creación (una visión de conjunto) que después desgloso en etapas que es algo que se hace normalmente en cualquier actividad cotidiana (como ejemplo simple: hacer pan)
Obtener la harina, el agua, la sal y el emulgente (levadura) – crear la masa -- dejarla reposar – darle forma a las piezas de masa --- dejarla reposar --- hornear y disfrutar del producto acabado.

Nota:

Comando107 ==> Private Sub Comando107_Click() ..... End Sub

No tengo claro el entorno de trabajo:
.- Se supone que cada emisora genera sus informes (1 ... 7) pero el directorio de trabajo sospechosamente parece el de una única maquina
Si se hace todo en una maquina ¿Por qué no se insertan las estadísticas directamente en la tabla de destino?

.- ¿Quién crea el Excel?
.- ¿Se ha de crear un Excel por cada emisora? (Creo que ya se hace ahora)
.- Si solo se crea un Excel del conjunto de emisoras:
.. ¿Sería correcto agrupar los datos y generar el Excel con ellos?
(El mismo y actual Excel debería funcionar con datos una emisora o de cien emisoras).

Continuar este hilo (con tantas adaptaciones en función de los ‘mensajes de retorno’) lo hará más confuso de lo que ya es.

Planifica lo que deseas y (duda a duda) se resuelven los problemas.
Por cierto en la red hay excelentes cursos de Access en formato Pdf bastante completos y sencillos de seguir, serán de gran utilidad para aprender (y más aún para intercambiar conceptos)

¡Gracias! 

Entonces vamos a comenzar otra vez, tal vez en mi premura por resolver lo pendiente complique todas las cosas.

Yo comencé con el planteamiento de una exportación en Excel con un código que construye una tabla y la exporta a una carpeta de la PC, en este caso lo que necesito y no he encontrado como hacerlo es que me exporte la tabla con el nombre del campo CodEmisora (que usted ya conoce). El código es:

 

Microsoft Access

Carlos D Reyes Leyvael 28 abr.

Exportar datos desde access con nombre definido

Tengo un botón que al accionarlo exporta una tabla, que se construye con los datos de una consulta, ahora, lo que necesito es que al guardar la exportación lo haga con un nombre que yo defina ya que esta base de datos la usan 6 clientes y al agrupar las exportaciones se sobre escriben

Private Sub cmdExportar_Click()
Dim rstNombrePrograma As DAO.Recordset, _
rstTituloTema As DAO.Recordset, _
qdf As DAO.QueryDef, _
strSQL As String, _
strHoja As String, _
strArchivo As String, _
strTitulo As String, _
Campo As DAO.Field, _
lngColumna As Long, _
i As Long, _
xls As Object 'Excel.Application
Const xlWBATWorksheet = -4167
Const xlAutomatic = -4105
Const xlSolid = 1
Const xlThemeColorDark1 = 1
Const xlToRight = -4161
Const xlNormal = -4143

On Error GoTo cmdExportar_Click_TratamientoErrores

strSQL = "SELECT NombrePrograma"
strSQL = strSQL & " FROM ProgramasEmitidos"
strSQL = strSQL & " GROUP BY NombrePrograma"

Set xls = CreateObject("Excel.Application")
xls.Visible = True

xls.Workbooks.Add xlWBATWorksheet
strHoja = xls.ActiveSheet.Name

Set rstNombrePrograma = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

If Not (rstNombrePrograma.EOF And rstNombrePrograma.BOF) Then
Do
StrSQL = "SELECT TituloTema, NombreAutor, NombreInterprete, Sonatas, Fecha, Calculo, Local, Plantilla "
strSQL = strSQL & "FROM ProgramasEmitidos"
strSQL = strSQL & " WHERE NombrePrograma = Parametro1"
Set qdf = CurrentDb.CreateQueryDef("", strSQL)

Set rstTituloTema = qdf.OpenRecordset
xls.ActiveWorkBook.Sheets.Add Before:=xls.Worksheets(xls.Worksheets.Count)
xls.ActiveSheet.Name = rstNombrePrograma!NombrePrograma
With xls
lngColumna = 1
For Each Campo In rstTituloTema.Fields
strTitulo = ""
For i = 1 To Len(Campo.Name)
strTitulo = strTitulo & Mid(Campo.Name, i, 1)
If i < Len(Campo.Name) Then
If EsMayuscula(Mid(Campo.Name, i + 1, 1)) Then strTitulo = strTitulo & " "
End If
Next i
.ActiveSheet.Cells(1, lngColumna) = strTitulo
lngColumna = lngColumna + 1
Next Campo
.Range("A1").Select
.Range(.Selection, .Selection.End(xlToRight)).Select
.Selection.Font.Bold = True
With .Selection.Interior
.Pattern = xlSolid
.ColorIndex = 15
End With
End With

If Not (rstTituloTema.EOF And rstTituloTema.BOF) Then
xls.ActiveSheet.Cells(2, 1).CopyFromRecordset rstTituloTema
End If
xls.Columns("A:G").EntireColumn.AutoFit
rstNombrePrograma.MoveNext
Loop Until rstNombrePrograma.EOF
End If

xls.Application.DisplayAlerts = False
xls.ActiveWorkBook.Worksheets(strHoja).Delete

strArchivo = "D:\SG RADIO\EXPORTACIONES\Derecho Autor Obras Completas.xls"

If Not Nz(strArchivo, "") = "" Then
xls.ActiveWorkBook.SaveAs FileName:=strArchivo, FileFormat:=xlNormal
Else
xls.ActiveWorkBook.Saved = True
End If
xls.Application.DisplayAlerts = True

cmdExportar_Click_Salir:
On Error Resume Next
xls.Quit
Set xls = Nothing
Set qdf = Nothing
CierraRecordsetDAO rstNombrePrograma
CierraRecordsetDAO rstTituloTema
On Error GoTo 0
Exit Sub
cmdExportar_Click_TratamientoErrores:
MsgBox "Error " & Err & " en proc.: cmdExportar_Click de Documento VBA: Form_frmFrmIniInformes (" & Err.Description & ")", vbCritical + vbOKOnly, "ATENCION"
Resume cmdExportar_Click_Salir
Resume Next
End Sub 

Gracias por su atención amigo 

Ah el CodEmisora sale de la tabla 01TNomencladorEmisora

Ah y lo pido así debido a que para donde se envían esas tablas en Excel se necesita saber los datos de cada emisora ya que estas no se consolidan

El nombre se archivo se define en esta línea:

strArchivo = "D:\SG RADIO\EXPORTACIONES\Derecho Autor Obras Completas.xls"

Para obtener un dato de una tabla se puede utiliza la función de dominio DLookup.

(Devuelve el valor de un campo de una tabla, sin condiciones: el del primer registro que encuentre)

Para ver el dato que devuelve se puede utilizar un mensaje:

MsgBox Dlookup("CodEmisora", "01TNomencladorEmisora")

Para añadirlo al inicio del nombre y separado por un guion:

strArchivo = "D:\SG RADIO\EXPORTACIONES\" & Dlookup("CodEmisora", "01TNomencladorEmisora") & " -  Derecho Autor Obras Completas.xls"

Para añadirlo al final del nombre y separado por un guion:

strArchivo = "D:\SG RADIO\EXPORTACIONES\Derecho Autor Obras Completas - " & Dlookup("CodEmisora", "01TNomencladorEmisora") & ".xls"

Si la tabla 01TNomencladorEmisora tiene mas de un registro, hay que condicionar la función (indicarle de que registro se desea obtener el contenido)

Todo perfecto Enrique.

Ahora, y espero que sea para terminar, necesito que la base de datos consolidador me importe las tablas que exportan las bases de datos primarias, o sea las, ejemplo:  1008 Estadistica1.html.... sin considerar en el nombre el CodEmisora porque esta BD recibe los datos de N emisoras y al consolidarlas no necesita saber de que emisora proviene y si consolidar en total de los datos de todas.

Anteriormente las importaba usando en el código el nombre de cada emisora en abreviatura:

Sub ImpEst_Click()

DoCmd.TransferText acImportHTML, , "T Estadistica1", _
"D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\01 Estadistica1 RMB.html", True

End Sub

Ahora como no se usa este nombre predefinido, si no, que la exportación se hace con el nombre de la emisora N que exporte, entonces tendría que obviar ese CodEmisora a la hora de importar las tablas al consolidador.

Le aclaro que en el caso especifico de mi provincia se llevan a la carpeta EXPORTACIONES RCIBIDAS, 42 tablas Estadistica, que no son mas que las 7 exportaciones de las 6 emisoras que existen acá.

No se si he sido explícito en mi pregunta, espero que si, de todas formas le podemos aclarar cualquier duda y reiterarle mi mas sincero agradecimiento por todas su ayuda hasta ahora

Hola amigo ya se cansó de ayudarme

No había leído el mensaje, pero creo que lo que se solicita ya lo plantee en una respuesta anterior tras el comentario (Te voy a describir mi visión sobre el tema:) en la que con 'cuatro líneas' se importan las siete estadísticas, de todas y cada una de las emisoras que estén en la carpeta.

Es mas, siempre considere (y confirmado por una respuesta de su parte) que de lo que trataba el hilo era de 'esas importaciones' y no el fichero XLS.

El sistema operativo (no Access) impone la regla de que en la misma carpeta no se permite la duplicidad de nombres de fichero (lo que exige un diferenciador).

Para que la importación propuesta funcione la 'diferencia' en el nombre de los ficheros (sea la que sea puesto que no se tiene en cuenta) ha de ir al final del mismo.

Dado que lo datos van a insertarse sin diferenciar la procedencia (sin comentarios: revisar el mensaje antes mencionado) no será necesario añadir campo extra a las Estadísticas.

Para ser mas concreto en la respuesta, dejo a continuación la copia fiel del código que solo necesita un botón para ejecutarlo (o el añadirlo a otro proceso en curso).

Dim NFic As Long, Temp_Nombre as String, Temp_Destino as String, Const_Ubicacion As String
Const_Ubicacion = "D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\”
For NFic = 1 to 7
   Temp_Destino = “TEstadistica” & NFic
   Temp_Nombre = Dir(Const_Ubicacion & “Estadistica” & Nfic & “*.Html”
   Do
      If Nfic =”” Then Exit Do
      DoCmd.TransferText acImportHTML, , Temp_ Destino, Const_Ubicacion & Temp_Nombre, True
      Temp_Nombre = Dir
      Loop
   Next NFic

me da esto amigo, sin su

ayuda no lo podré hacer y espero me de su otro apellido para poner los agradecimientos en la BD cuando termine

y creo, error muy grande mío, que no le dije y me perdona, que al importarlas, las Estadistica1 " ".html van a la tabla del consolidador TEstadistica1, las Estadistica2 " ".html a la tabla del consolidador TEstadistica2 y así sucesivamente, siempre obviando el CodEmisora

Carlos, no tengo interés (que agradezco) de figurar en parte alguna, si de verdad quieres agradecerme algo, simplemente demuestra que no he perdido el tiempo y has aprendido algo.

Ese código debería utilizarse en la base (aplicación) en donde se han de consolidar los datos, esto es:

Donde estén/existan las tablas que han de recibir los datos de las diferentes consultas.

En la línea que comienza con Temp_Nombre =  ......   añadir un paréntesis de cierre al final

Temp_Nombre = Dir(Const_Ubicacion & “Estadistica” & NFic & “ * .Html”)

En la línea que sale en rojo hay que eliminar un espacio en el nombre de la variable

DoCmd.TransferText acImportHTML, , Temp_Destino, Const_Ubicacion & Temp_Nombre, True

(Tendré que modificar el método de transferir código al foro).

Los datos se transfieren a la carpeta que corresponda en cada vuelta del bucle, su nombre se 'genera' aquí:

Temp_Destino = “TEstadistica” & NFic

Por lo que la variable tomara el valor de NFic (1 .....7)
En la primera vuelta (NFic =1) ===>>>Temp_Destino = “TEstadistica1”
En la segunda vuelta (NFic =2) ===>>>Temp_Destino = “TEstadistica2” 

Y se repite hasta finalizar el bucle

La función DIR() es muy interesante, la primera vez se le da la ruta completa
Si se repite la llamada (sin la ruta) devuelve el siguiente fichero que (en la misma ubicación) cumpla las condiciones y cuando no encuentra más.. devuelve una cadena vacía (que es cuando NFic pasa de uno a dos, tres ...)

Y en cada cambio de NFic:
Temp_Nombre = Dir(Const_Ubicacion & “Estadistica” & NFic & “ * .Html”)

Se repite el cambio de numero (NFic) por lo que ...
Temp_Nombre = Dir("D:\SG RADIO CONS\EXPORTACIONES RECIBIDAS\Estadistica1 * .Html”)

El asterisco (*) le permite que reciba el de la 'emisora uno' (o la marca diferencial que se le añada y después al siguiente ... mientras existan ficheros que comiencen por "Estadistica1".

Cuando NFic cambia a 2 y se repite para los que comienzan por "Estadistica2".

Finaliza cuando el bucle llegue a siete ("Estadistica7") y DIR devuelva una cadena de texto vacía.

Solo un consejo: Ojo con los dedos sensibles, con la metodología que aplicas (los datos no recuerdan su origen) se insertaran (duplicaran, triplicaran ...) tantas veces como 'dedo sensible' haga un click en la importación ... de los mismos datos.

aquí me dice que no coinciden los tipos

 If NFic = "" Then Exit Do

realmente min conocimientos hasta hora no me habían llevado a utilizar este tipo de funciones que usted me ha enseñado o mostrado, soy aprendiz como le dije.

En cuanto a los dedos sensibles el formulario donde está ubicado el botón tiene AlAbrir:

Private Sub Form_Open(Cancel As Integer)
DoCmd.SetWarnings (False)
DoCmd.OpenQuery "VaciarTablaEstadistica1"
DoCmd.OpenQuery "VaciarTablaEstadistica2"
DoCmd.OpenQuery "VaciarTablaEstadistica3"
DoCmd.OpenQuery "VaciarTablaEstadistica4"
DoCmd.OpenQuery "VaciarTablaEstadistica5"
DoCmd.OpenQuery "VaciarTablaEstadistica6"
DoCmd.OpenQuery "VaciarTablaEstadistica7"
DoCmd.OpenQuery "VaciarTablaInformeACDAM"
DoCmd.OpenQuery "VaciarTablaEstadisticaMusicaInc1"
DoCmd.OpenQuery "VaciarTablaEstadisticaMusicaInc2"
End Sub

por lo que no hay posibilidad de que se dupliquen los datos pues las tablas son vaciadas automáticamene

Error mío, cambia la línea por esta:

If Temp_Nombre = ”” Then Exit Do

Si los ficheros se borran tras su importación, se puede hacer en el mismo bucle.

Antes de 'Temp_Nombre = Dir' (que obtendría el siguiente fichero) con Kill se borra el actual

Kill (Const_Ubicacion & Temp_Nombre)
Temp_Nombre = Dir

¡Gracias migo! Todo hasta ahora está como necesitaba, voy a cerrar este hilo ya y espero que si necesito algo nuevamente poder contar con su ayuda, se que no necesita reconocimiento, pero era para hacerle saber mi agradecimiento, por acá por Cuba Carlos Reyes Leyva le queda muy agradecido de darme la oportunidad de aprender algo más con Usted. Dios lo bendiga y un abrazo de corazon

Hola Enrique, una consulta más. Es posible hacerle licencia de uso, o sea e explotación, a una base de datos e Access?

Depende de que seas el propietario intelectual de la aplicación, en el caso de no serlo tendrías que obtener el permiso de los coautores.

Si la vas a comercializar deberías registrarla (obtener la patente) para protegerte.

Por parte de Microsoft, creo que solo exige tener una licencia legal de Access para crearla, al distribuirla (los que no dispongan de Access), pueden bajar de Microsoft el Runtime (que es gratuito) que les permitirá utilizarla (pero no modificarla).

Suele ser una práctica habitual el distribuirla compilada (no podrán modificarla ni obtener su programación interna). Solo acceso a tablas y consultas pero (es mi opinión), tu serás el propietario intelectual, pero los datos son y serán del usuario (que es quien los genera).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas