Jump to content
Visor

ANSWERED Importar sólo datos requeridos desde otro libro excel

Recommended Posts

Saludos amigos del foro, he tratado de realizar una importación acorde a los seleccionado en combobox dependientes. Es decir si selecciono solo en el combobox1 se mostrará todo lo relacionado a la selección pero si tambien selecciono en el combobox2 me gustaria que se con esa indicación y las columnas según lo mostrado en el archivo destino ejemplo.

La macro esta funcionando solo cuando se selecciona el archivo y se pulsa el botón abrir, pero falla cuando se cancela he tratado de resolverlo pero no responde.

Acudo al foro para alguna colaboración al respecto

Agradezco anticipadamente el apoyo

Subo los dos archivos para que lo vean

Prueba8 ImportarDatos.rar

Share this post


Link to post
Share on other sites

Hola Visor

Cambia el esquema... inserta un boton para abrir el archivo, si abre corre el proceso de llenar los combos, luego eliges las opciones y presiona el boton para cargar los datos, estaria demas decirte que el boton importar solo es para correr el procedimiento de copiado 

Eso si declara la variable "rutarchivo" como variant, no como string

if rutarchivo <> false then
	abrir archivo
	llenar combos
else
	exit sub
end if

 

Saludos 

Share this post


Link to post
Share on other sites
Hace 15 horas, Gerson Pineda dijo:

if rutarchivo <> false then abrir archivo llenar combos else exit sub end if

Muy agradecido,...cuando rutaArchivo <> False, .. No me funciona la macro de Selección de archivo. Mientras que en True funciona perfecto!! 

if rutarchivo <> True then
	abrir archivo
	llenar combos
else
	exit sub
end if

No obstante la importación de solo los datos requeridos, en relación al tema aun no le veo como solucionarlo..Cuando selecciono en combobox1, si pulso el botón importar el resultado sería por ejemplo los 15 items que le corresponden, mientras que si en el combobox selecciono solo un tema me muestra por ejemplo los 5 items, como esta en el archivo que subo. Me gustaria una sugerencia al respecto.

Subo el archivo de importación con el avance realizado.

ImportarDatosV2.xlsm

Share this post


Link to post
Share on other sites

Gracias, he visto el Gif... y lo que me da a notar es que está exportando. En realidad es al revés la macro debe estar donde quiero traer la informacion osea importar

En el libro ImportarDatosV2 está la macro y está vacío,... importo la información del libro LDatosOrigen,  cuando selecciono un nombre me trae toda la informacion respecto a ese nombre excepto las columna de fechas y código ejemplo; si selecciono  Andrés  me debe traer lo concerniente a   Andrés Tema1,  Andrés Tema2, Andrés Tema3...

Pero si selecciono el segundo combobox ejemplo Andrés Tema1 entonces me importará  lo concerniente a la informacion de texto1, texto2, texto3, texto4, texto5  (igualmente excepto las fechas y código) . Más o menos como lo veo en el gif pero al revés,

traer no enviar...

Como en el archivo ejemplo que envié importaba pero no podía traer solo lo concerniente al dato seleccionado.

Share this post


Link to post
Share on other sites
En 29/6/2020 at 3:47 , Visor dijo:

Muy agradecido,...cuando rutaArchivo <> False, .. No me funciona la macro de Selección de archivo. Mientras que en True funciona perfecto!! 

No lo puedo creer :D

En tu archivo tenias esto:

Dim rutaArchivo As Variant

If rutaArchivo <> True Then
'    abrir archivo
'On Error Resume Next
rutaArchivo = Application.GetOpenFilename(Title:="Prueba selección ficheros Excelforo", filefilter:="Excel files (*.xlsx), *.xlsx")
Workbooks.Open Filename:=rutaArchivo
......

La variable debe estar fuera de la condicion! y deberia quedar asi:

Dim rutaArchivo As Variant
rutaArchivo = Application.GetOpenFilename(Title:="Prueba selección ficheros Excelforo", filefilter:="Excel files (*.xlsx), *.xlsx")

If rutaArchivo <> False Then
'    abrir archivo
'On Error Resume Next
Workbooks.Open Filename:=rutaArchivo
......

Luego solo es cosa de que filtres el libro con la BD, según los criterios de los combobox, y copies los datos visibles

 

Saludos a ambos!

Share this post


Link to post
Share on other sites

Gracias Gerson Pineda por la aclaración, corrección y sugerencias... Veo que no he colocado en el lugar correcto las lineas del codigo por eso se comporta diferente al ejecutar Gracias

Share this post


Link to post
Share on other sites
En 1/7/2020 at 10:43 , JSDJSD dijo:

No se si entendí bien lo que necesitas, observa y comenta

Estimado JSDJSD  Saludos, me podrias ayudar enviando la solución que me muestras en el Gif?? yo me encargo de ajustarlo Te agradezco anticipadamente...😶

Share this post


Link to post
Share on other sites
Hace 12 horas, Visor dijo:

Gracias Gerson Pineda por la aclaración, corrección y sugerencias... Veo que no he colocado en el lugar correcto las lineas del codigo por eso se comporta diferente al ejecutar Gracias

Asi es, por eso es recomendable declarar las variables siempre, y mas cuando se trata de proyectos como los tuyos

Por lo demás ya casi lo tienes, solo debes agregar los filtros a la BD y copiarlos al libro que contiene el formulario, es lo que entiendo te falta, para eso te recomiendo hazlo aparte con 2 criterios y luego lo adaptas con las variables de los combobox

 

Saludos!

Share this post


Link to post
Share on other sites
Hace 11 minutos , JSDJSD dijo:

Bueno pero viendo el consejo del Maestro Gerson Pineda, intentalo tu primero y si no lo consigues comentalo.

Hola JSD, lo comente porque ando mas que ocupado, pero si tu tienes algo ya elaborado, pues a espera de un aporte mas de tu parte

Que todo vaya bien por tu lado y que esten bien

 

Saludos hasta España!

Share this post


Link to post
Share on other sites

Gracias Gerson, todos estos días no he podido dormir (literalmente) buscando pistas para resolver. Lo que ha hecho Antoni en soluciones antiguas, aunque no era lo mismo que aquí buscaba, me dieron pistas, a más de lo que he encontrado en la red..Desafortunadamente no pude cumplir con la entrega de las listas para el análisis de 360 reactivos y que cada vez se repite este procedimiento de análisis, pero me dieron plazo hasta el lunes.

En fin ya lo he conseguido al estilo mio, de seguro esta lleno de errores pero me funciona y creo que con ello voy a presentar las listas organizadas en el archivo word que es como quieren las Direcciones académicas.

pego aqui el codigo

Sub importar()
Dim wbLibroOrigen As Workbook
Dim wbLibroDestino As Range
Dim wbLDatosOrigen As Range
Dim wdLOrangoCopy As Range
Dim ufila As Long

Application.ScreenUpdating = False
Application.DisplayAlerts = False
'****************************************************
Set wbLibroOrigen = ActiveWorkbook
'Buscar la última fila con datos del rango
ufila = wbLibroOrigen.Sheets("Hoja1").Cells(Rows.Count, 1).End(xlUp).Row

'inicializar el rango, Desde la columna A hasta la R:
Set wbLDatosOrigen = wbLibroOrigen.Sheets("Hoja1").Range("A1:R" & ufila)
'coloco autofiltro
hor = wbLDatosOrigen.Select
Selection.AutoFilter

'Indico el criterio
With Selection
 If ComboBox1 <> Empty Then .AutoFilter Field:=1, Criteria1:=ComboBox1
 If ComboBox2 <> Empty Then .AutoFilter Field:=2, Criteria1:=ComboBox2
End With

'*******************************************
''Datos destino
Set wbLibroDestino = ThisWorkbook.Sheets("HAux").Range("B7")
'Limpia destino
UltFila = ThisWorkbook.Sheets("HAux").Range("A" & Rows.Count).End(xlUp).Row
ThisWorkbook.Sheets("HAux").Range("A8:R" & UltFila).ClearContents

'Copiar el rango:
Set wdLOrangoCopy = wbLibroOrigen.Sheets("Hoja1").Range("A1:R" & ufila)
wdLOrangoCopy.Copy wbLibroDestino
''*******************************************
'Quito autofiltro
If wbLibroOrigen.Sheets("Hoja1").AutoFilterMode Then
wbLibroOrigen.Sheets("Hoja1").Range("A1").AutoFilter
End If
wbLibroOrigen.Sheets("Hoja1").Range("A1").Select
End Sub

No he podido importar solo las columnas que requiero, pero después manualmente las voy eliminando

Gracias😐

Edited by Visor

Share this post


Link to post
Share on other sites

Genial!! tiene varias instrucciones que me libran de darme las vueltas con los filtros organizar columnas, eliminar, cambiar en la hoja auxiliar (Hoja2) y luego llevarla a la Hoja1.

sobre todo este que tienes en la macro que has realizado

            .Cells(ufila + 1, 1) = wbLibroOrigen.Sheets("Hoja2").Cells(cont, 1)

Me toma específicamente la columna que requiero del archivo origen.

Con este codigo voy a corregir mucho en lo mio

Te quedo muy agradecido

Share this post


Link to post
Share on other sites

Estimado JSDJSD

Saludos

He estado tratando de verificar si se puede usar esta parte del codigo que tienes pero con este cambio para vitar la Hoja2 a ver si se pueda ejecutar directamente desde la Hoja1, pero encuentro dificultad,...Seria que eso no se debe hacer???

Algunas veces más consigo realizar estas aplicaciones de modo intuitivo o por deducción antes que por conocimiento cabal..

Te pongo el codigo y una imágen

Del botón importar

 ufila1 = wbLibroOrigen.Sheets("Hoja1").Cells(Rows.Count, 1).End(xlUp).Row
    
    For cont = 2 To ufila1
        ufila = wbLibroDestino.Sheets("H_importacion").Cells(Rows.Count, 2).End(xlUp).Row
        
        With wbLibroDestino.Sheets("H_importacion")
                'ORIGEN                                                             DESTINO
            wbLibroOrigen.Sheets("Hoja1").Cells(cont, 1).SpecialCells(12).Copy .Cells(ufila + 1, 1)
            wbLibroOrigen.Sheets("Hoja1").Cells(cont, 2).SpecialCells(12).Copy .Cells(ufila + 1, 2)
            wbLibroOrigen.Sheets("Hoja1").Cells(cont, 3).SpecialCells(12).Copy .Cells(ufila + 1, 3)
            wbLibroOrigen.Sheets("Hoja1").Cells(cont, 5).SpecialCells(12).Copy .Cells(ufila + 1, 4)
            wbLibroOrigen.Sheets("Hoja1").Cells(cont, 7).SpecialCells(12).Copy .Cells(ufila + 1, 5)
        End With
    Next

Al ejecutar me resulta error, aunque si obtengo la importación de lo seleccionado pero no de las columna selectas como se esperaría según el código

Por su puesto que si no se pude hacer me quedo con lo ya conseguido hasta ahora

 

ERROR.PNG

Mil disculpas por esta adición de consulta

Edited by Visor

Share this post


Link to post
Share on other sites

Muy agradecido

Entiendo que la respuesta a: Se puede usar asi?:

wbLibroOrigen.Sheets("Hoja1").Cells(cont, 1).SpecialCells(12).Copy .Cells(ufila + 1, 1)

es NO!!

Aunque no sé cómo así me funcionó!! pero luego me da el error según lo comentado antes...

Pero entonces siempre se requiere un espacio auxiliar

Bien!! creo con esto está claro..

Quedo muy agradecido

Share this post


Link to post
Share on other sites

Que sorpresa!!! Gracias por el detalle ,..Excelente,. otro código otro estilo, igual creas un área auxiliar,  pero si es una hoja..... Worksheets("aux") no veo donde la creas ni donde la eliminas simplemente no existe en los libros se ejecuta tan rápido que el libro origen prácticamente provee los datos como sin abrirlo. Resize un código interesante.

Gracias por tu apoyo

Share this post


Link to post
Share on other sites
Hace 4 horas, Visor dijo:

igual creas un área auxiliar,  pero si es una hoja..... Worksheets("aux") no veo donde la creas ni donde la eliminas simplemente no existe en los libros se ejecuta tan rápido que el libro origen prácticamente provee los datos como sin abrirlo. Resize un código interesante.

Si te vas al explorador del proyecto VBA, en el árbol de módulos, puedes ver la hoja "aux" 

Te adjunto otro método, trabajando con una matriz y como te lo comenté al inicio, trasladando los registros visibles

 

Saludos!

Importar datos de otro libro.zip

Share this post


Link to post
Share on other sites

 😲Muy agradecido

pense que solo este código

.SpecialCells(12).Copy

era el único que podía tomar datos filtrados, por es seguí intentando de este modo. Una matriz como lo haces, lo ejecutas tan fácil y me permite seleccionar directamente la columna que quiero importar

Me das más lecciones, normalmente ya había aprendido que

primero: declarar variables

segundo: establecer variables (Set)

tercero: asignar la función para que se ejecute lo que quiero con la variable

Pero vero que en algunos casos no le das estas instrucciones a Excel en los código

Qué ocurre?

Me he perdido de muchas cosas....

Aquí estableces Set vmha = .Worksheets("aux"), pero vmha no está declarado!!, y además que es vmha?? una hoja que aparece y luego desaparece?? . Efectivamente me parece que sí.

Otro código curioso al menos para mí es cc, está declarado como rango pero no está establecido (set = ) y si embargo le haces trabjar luego en vmh1.Range("A1").Offset(vuf + f) = cc 

Bien lo importante es que funciona pero lo más importante es que algunas cosas me haces desaprender, lo malo es que no se el rumbo de orden lógico, imagina un cc que está declarado pero no indicado a que es igual...

Por otro lado he tratado de ver  cómo es que si funciona .SpecialCells(12).Copy para enviar directo su ningún espacio u hoja auxiliar, pero algo me le ha pasado el archivo que no logro abrir con la macro el otro libro… pero si lo he mostrado en el post18

 

En 4/7/2020 at 11:40 , Visor dijo:

ERROR.PNG

En fin ya he estado trabajando con el código resuelto

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

INFORMACIÓN BÁSICA SOBRE PROTECCIÓN DE DATOS

Responsable: Sergio Andrés Celemín

Finalidad: Moderar y responder comentarios de usuarios. Recuerda que la información que facilites es pública, y los datos que incluyas los leerá cualquier visitante de esta web, así como el avatar que poseas.

Legitimación: Consentimiento del interesado.

Destinatarios: Hetzner Online GmbH.

Derechos: Puedes ejercitar en cualquier momento tus derechos de acceso,
rectificación, supresión, oposición y demás derechos legalmente establecidos a
través del email sergio@ayudaexcel.com.

Información adicional: Encontrarás más información en la política de privacidad.




  • Posts

    • Amigos, estoy muy agradecido con todos por tratar de ayudarme a resolver el dilema de ocultar la contraseña en el ImputBox. Desafortunadamente ninguna de las soluciones me llevo al exito. Pero, la buena noticia es que trasteando un poco en la red, encontre la solucion, y se las dejo por si alguien la necesita.   Option Explicit'---------------------------------- 'API CONSTANTS FOR PRIVATE INPUTBOX '---------------------------------- #If VBA7 Then Private Declare PtrSafe Function CallNextHookEx Lib "user32" (ByVal hHook As LongPtr, _ ByVal ncode As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr Private Declare PtrSafe Function GetModuleHandle Lib "kernel32" Alias _ "GetModuleHandleA" (ByVal lpModuleName As String) As LongPtr Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _ (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As LongPtr) As Long Private Declare PtrSafe Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" _ (ByVal hDlg As LongPtr, ByVal nIDDlgItem As Long, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr Private Declare PtrSafe Function GetClassName Lib "user32" Alias "GetClassNameA" _ (ByVal hwnd As LongPtr, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Private Declare PtrSafe Function GetCurrentThreadId Lib "kernel32" () As Long #Else Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _ ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function GetModuleHandle Lib "kernel32" Alias _ "GetModuleHandleA" (ByVal lpModuleName As String) As Long Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _ (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, _ ByVal dwThreadId As Long) As Long Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long Private Declare Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" _ (ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal wMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" _ (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long #End If 'Constants to be used in our API functions Private Const EM_SETPASSWORDCHAR = &HCC Private Const WH_CBT = 5 Private Const HCBT_ACTIVATE = 5 Private Const HC_ACTION = 0 #If VBA7 Then Private hHook As LongPtr #Else Private hHook As Long #End If '---------------------------------- 'PRIVATE PASSWORDS FOR INPUTBOX '---------------------------------- '//////////////////////////////////////////////////////////////////// 'Password masked inputbox 'Allows you to hide characters entered in a VBA Inputbox. ' 'Code written by Daniel Klann 'March 2003 '64-bit modifications developed by Alexey Tseluiko 'and Ryan Wells (wellsr.com) 'February 2019 '//////////////////////////////////////////////////////////////////// #If VBA7 Then Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPtr #Else Public Function NewProc(ByVal lngCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long #End If Dim RetVal Dim strClassName As String, lngBuffer As Long If lngCode < HC_ACTION Then NewProc = CallNextHookEx(hHook, lngCode, wParam, lParam) Exit Function End If strClassName = String$(256, " ") lngBuffer = 255 If lngCode = HCBT_ACTIVATE Then 'A window has been activated RetVal = GetClassName(wParam, strClassName, lngBuffer) If Left$(strClassName, RetVal) = "#32770" Then 'This changes the edit control so that it display the password character *. 'You can change the Asc("*") as you please. SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, asc("*"), &H0 End If End If 'This line will ensure that any other hooks that may be in place are 'called correctly. CallNextHookEx hHook, lngCode, wParam, lParam End Function Function InputBoxDK(Prompt, Title) As String #If VBA7 Then Dim lngModHwnd As LongPtr #Else Dim lngModHwnd As Long #End If Dim lngThreadID As Long lngThreadID = GetCurrentThreadId lngModHwnd = GetModuleHandle(vbNullString) hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID) InputBoxDK = InputBox(Prompt, Title) UnhookWindowsHookEx hHook End Function Adicionalmente dejo el link de la pagina de donde lo extraje, y el archivo con el codigo para que lo vean. Solucion Un abrazo, y de nuevo muchas gracias a todos. Tema solucionado!     Inputbox funcionando.xlsm
    • Hola Tu Office es de 64 bits y en el archivo de ejemplo enviado hay varias funciones de la API de Windows que hay que modificar en las declaraciones. Modifica toda la parte que está entre la línea #If VBA7 Then y la línea #Else reemplazando por las siguientes: Private Declare PtrSafe Function SetCurrentDirectoryA Lib "kernel32" (ByVal lpPathName As String) As Long Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr Private Declare PtrSafe Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As Long Private Declare PtrSafe Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPtr Private Declare PtrSafe Function TerminateProcess Lib "kernel32" (ByVal hProcess As LongPtr, ByVal uExitCode As Long) As Long Private Declare PtrSafe Function CloseHandle Lib "kernel32" (ByVal hObject As LongPtr) As Long Private Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr Private Declare PtrSafe Function CallNextHookEx Lib "user32" (ByVal hHook As LongPtr, ByVal ncode As Long, ByVal wParam As LongPtr, lParam As LongPtr) As LongPtr Private Declare PtrSafe Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As LongPtr Private Declare PtrSafe Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As LongPtr) As Long Private Declare PtrSafe Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" (ByVal hDlg As LongPtr, ByVal nIDDlgItem As Long, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr Private Declare PtrSafe Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As LongPtr, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Private Declare PtrSafe Function GetCurrentThreadId Lib "kernel32" () As Long   Yo prefiero usar Public, pero lo dejo en Private como te lo han mostrado. Saludos.
    • Estiamados foristas, acudo a Uds para encontrar ayuda al siguiente tema. Tengo una matriz en power bi en la que coloque el ID de una tabla producto y 3 medidas: 1er fecha 2da fecha Dias entre fechas Lo que necesito encontrar es que me traiga una nueva medida en que los dias entre fechas sea >= a 365 dias Trate de hacerlo con un CALCULATE -  ALL - FILTER pero o no me toma argumentos booleanos o no me toma la medida de dias entre fechas ya que no es una columna no esta en la tabla origen (es una medida calculada) Les paso en excel el ejemplo Dede ya muchas gracias data.xlsx
    • Hola Gerson Muchas gracias por tus archivos. No tengo Office 365 por lo que el primer archivo no lo puede utilizar. El segundo funciona perfectamente pero si intento crear más columnas me aparece error. El tercero no lo entiendo porque no veo ninguna fórmula en la tabla resumen. ¿Me puedes explicar el significado de lo que he marcado en verde? =SI(FILAS($A$1:$A1)>$B$12;"";INDICE(data!$A$10:$F$29;AGREGAR(15;6;FILA(data!$A$10:$A$29)-9/((data!$A$10:$A$29>=$C$7)*(data!$A$10:$A$29<=$C$8));FILAS($A$1:$A1));COLUMNAS($A$1:A$1))) Muchas gracias de nuevo Gerson. Saludos 
    • 😅😊   En la celda E10 debes escribir o seleccionar de alguna lista,  el mes que deseas traer, por ejm Ago en F10:   =INDICE(Hoja1!C10:N10,COINCIDIR(E10,Hoja1!C2:N2,))   //----------- 🙄 O si lo que quieres es traer el dato del mes actual =INDICE(Hoja1!C10:N10,MES(HOY()))   Mi separador de argumentos es la coma, si el tuyo es otro, corriges.   saludos, 😀 Silvia
  • Recently Browsing

    No registered users viewing this page.

×
×
  • Create New...

Important Information

Privacy Policy