Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

leojordao

Importar Arquivo txt no access

Recommended Posts

Olá pessoal,Estou precisando importar um arquivo txt para o access com uma definição pré-estabelecida, fazer isso diretamente é muito fácil, mas estou precisando que o usuário determine o local do arquivo. Por isso não dá para estabelecer um caminho fixo e usar a função transfertext.Tentei usar CommonDialog para abrir a caixa de abrir arquivo, tentei usar treeview e listview, mas nenhuma dessas opções funcionaram corretamente.Tenho um outro problema, meus usuários finais podem ter seus diretórios raíz no C:, D: ou E:, não tenho como prever isso cada um usa sua máquina com uma configuração totalmente independente.Agradeço antecipadamente a ajuda e paciência.Atenciosamente,Leonardo Jordão

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá para todos que tem esse problema. Não se sintam sozinhos nesse mundo. Eu também já os tive hehehe!

 

É o seguinte, pra resolver o problema da telinha pra achar o arquivo a ser importado use esse código:

 

Crie um módulo com um nome qualquer e salve esse código dentro:

 

ASP

[*]

 

[*]Option Compare Database

 

[*]Option Explicit

 

[*]

 

[*]'This code was originally written by Ken Getz.

 

[*]'It is not to be altered or distributed,

 

[*]'except as part of an application.

 

[*]'You are free to use it in any application,

 

[*]'provided the copyright notice is left unchanged.

 

[*]'

 

[*]' Code courtesy of:

 

[*]' Microsoft Access 95 How-To

 

[*]' Ken Getz and Paul Litwin

 

[*]' Waite Group Press, 1996

 

[*]

 

[*]Type tagOPENFILENAME

 

[*] lStructSize As Long

 

[*] hwndOwner As Long

 

[*] hInstance As Long

 

[*] strFilter As String

 

[*] strCustomFilter As String

 

[*] nMaxCustFilter As Long

 

[*] nFilterIndex As Long

 

[*] strFile As String

 

[*] nMaxFile As Long

 

[*] strFileTitle As String

 

[*] nMaxFileTitle As Long

 

[*] strInitialDir As String

 

[*] strTitle As String

 

[*] flags As Long

 

[*] nFileOffset As Integer

 

[*] nFileExtension As Integer

 

[*] strDefExt As String

 

[*] lCustData As Long

 

[*] lpfnHook As Long

 

[*] lpTemplateName As String

 

[*]End Type

 

[*]

 

[*]Declare Function aht_apiGetOpenFileName Lib "comdlg32.dll" _

 

[*] Alias "GetOpenFileNameA" (OFN As tagOPENFILENAME) As Boolean

 

[*]

 

[*]Declare Function aht_apiGetSaveFileName Lib "comdlg32.dll" _

 

[*] Alias "GetSaveFileNameA" (OFN As tagOPENFILENAME) As Boolean

 

[*]

 

[*]Declare Function CommDlgExtendedError Lib "comdlg32.dll" () As Long

 

[*]

 

[*]Global Const ahtOFN_READONLY = &H1

 

[*]Global Const ahtOFN_OVERWRITEPROMPT = &H2

 

[*]Global Const ahtOFN_HIDEREADONLY = &H4

 

[*]Global Const ahtOFN_NOCHANGEDIR = &H8

 

[*]Global Const ahtOFN_SHOWHELP = &H10

 

[*]' You won't use these.

 

[*]'Global Const ahtOFN_ENABLEHOOK = &H20

 

[*]'Global Const ahtOFN_ENABLETEMPLATE = &H40

 

[*]'Global Const ahtOFN_ENABLETEMPLATEHANDLE = &H80

 

[*]Global Const ahtOFN_NOVALIDATE = &H100

 

[*]Global Const ahtOFN_ALLOWMULTISELECT = &H200

 

[*]Global Const ahtOFN_EXTENSIONDIFFERENT = &H400

 

[*]Global Const ahtOFN_PATHMUSTEXIST = &H800

 

[*]Global Const ahtOFN_FILEMUSTEXIST = &H1000

 

[*]Global Const ahtOFN_CREATEPROMPT = &H2000

 

[*]Global Const ahtOFN_SHAREAWARE = &H4000

 

[*]Global Const ahtOFN_NOREADONLYRETURN = &H8000

 

[*]Global Const ahtOFN_NOTESTFILECREATE = &H10000

 

[*]Global Const ahtOFN_NONETWORKBUTTON = &H20000

 

[*]Global Const ahtOFN_NOLONGNAMES = &H40000

 

[*]' New for Windows 95

 

[*]Global Const ahtOFN_EXPLORER = &H80000

 

[*]Global Const ahtOFN_NODEREFERENCELINKS = &H100000

 

[*]Global Const ahtOFN_LONGNAMES = &H200000

 

[*]

 

[*]Function GetOpenFile(Optional varDirectory As Variant, _

 

[*] Optional varTitleForDialog As Variant, _

 

[*] Optional strDescription As String, Optional varItem, Optional varHwnd As Long) As Variant

 

[*]'Incluídas as variáveis strDescription, varItem e varHwnd por JR.

 

[*]' Here's an example that gets an Access database name.

 

[*]Dim lngFlags As Long, strFilter As String

 

[*]Dim varFileName As Variant

 

[*]' Especifica que o arquivo escolhido já deve existir,

 

[*]' não muda diretórios ao terminar. Também não mostra

 

[*]' a caixa read-only.

 

[*] lngFlags = ahtOFN_FILEMUSTEXIST Or _

 

[*] ahtOFN_HIDEREADONLY Or ahtOFN_NOCHANGEDIR

 

[*] If IsMissing(varDirectory) Then

 

[*] varDirectory ""

 

[*] End If

 

[*] If IsMissing(varTitleForDialog) Then

 

[*] varTitleForDialog ""

 

[*] End If

 

[*]

 

[*] ' Define the filter string and allocate space in the "c"

 

[*] ' string Duplicate this line with changes as necessary for

 

[*] ' more file templates.

 

[*] strFilter ahtAddFilterItem(strFilter, strDescription, varItem)

 

[*] ' Now actually call to get the file name.

 

[*] varFileName ahtCommonFileOpenSave( _

 

[*] OpenFile:=True, _

 

[*] InitialDir:=varDirectory, _

 

[*] Filter:=strFilter, _

 

[*] flags:=lngFlags, _

 

[*] DialogTitle:=varTitleForDialog, _

 

[*] hWnd:=varHwnd)

 

[*]

 

[*] If Not IsNull(varFileName) Then

 

[*] varFileName TrimNull(varFileName)

 

[*] End If

 

[*] GetOpenFile = varFileName

 

[*]End Function

 

[*]

 

[*]

 

[*]Function ahtCommonFileOpenSave( _

 

[*] Optional ByRef flags As Variant, _

 

[*] Optional ByVal InitialDir As Variant, _

 

[*] Optional ByVal Filter As Variant, _

 

[*] Optional ByVal FilterIndex As Variant, _

 

[*] Optional ByVal DefaultExt As Variant, _

 

[*] Optional ByVal FileName As Variant, _

 

[*] Optional ByVal DialogTitle As Variant, _

 

[*] Optional ByVal hWnd As Variant, _

 

[*] Optional ByVal OpenFile As Variant) As Variant

 

[*]

 

[*]Dim OFN As tagOPENFILENAME

 

[*]Dim strFilename As String

 

[*]Dim strFileTitle As String

 

[*]Dim fResult As Boolean

 

[*] ' Give the dialog a caption title.

 

[*] If IsMissing(InitialDir) Then InitialDir = CurDir

 

[*] If IsMissing(Filter) Then Filter ""

 

[*] If IsMissing(FilterIndex) Then FilterIndex = 1

 

[*] If IsMissing(flags) Then flags = 0&

 

[*] If IsMissing(DefaultExt) Then DefaultExt ""

 

[*] If IsMissing(FileName) Then FileName ""

 

[*] If IsMissing(DialogTitle) Then DialogTitle ""

 

[*] If IsMissing(hWnd) Then hWnd Application.hWndAccessApp

 

[*] If IsMissing(OpenFile) Then OpenFile True

 

[*] ' Allocate string space for the returned strings.

 

[*] strFilename left(FileName & String(256, 0), 256)

 

[*] strFileTitle String(256, 0)

 

[*] ' Set up the data structure before you call the function

 

[*] With OFN

 

[*] .lStructSize Len(OFN)

 

[*] .hwndOwner = hWnd

 

[*] .strFilter = Filter

 

[*] .nFilterIndex = FilterIndex

 

[*] .strFile = strFilename

 

[*] .nMaxFile Len(strFilename)

 

[*] .strFileTitle = strFileTitle

 

[*] .nMaxFileTitle Len(strFileTitle)

 

[*] .strTitle = DialogTitle

 

[*] .flags = flags

 

[*] .strDefExt = DefaultExt

 

[*] .strInitialDir = InitialDir

 

[*] ' Didn't think most people would want to deal with

 

[*] ' these options.

 

[*] .hInstance = 0

 

[*] .strCustomFilter ""

 

[*] .nMaxCustFilter = 0

 

[*] .lpfnHook = 0

 

[*] 'New for NT 4.0

 

[*] .strCustomFilter String(255, 0)

 

[*] .nMaxCustFilter = 255

 

[*] End With

 

[*]

 

[*] ' This will pass the desired data structure to the

 

[*] ' Windows API, which will in turn it uses to display

 

[*] ' the Open/Save As Dialog.

 

[*] If OpenFile Then

 

[*] fResult aht_apiGetOpenFileName(OFN)

 

[*] Else

 

[*] fResult aht_apiGetSaveFileName(OFN)

 

[*] End If

 

[*]

 

[*] ' The function call filled in the strFileTitle member

 

[*] ' of the structure. You'll have to write special code

 

[*] ' to retrieve that if you're interested.

 

[*] If fResult Then

 

[*] ' You might care to check the Flags member of the

 

[*] ' structure to get information about the chosen file.

 

[*] ' In this example, if you bothered to pass in a

 

[*] ' value for Flags, we'll fill it in with the outgoing

 

[*] ' Flags value.

 

[*] If Not IsMissing(flags) Then flags OFN.flags

 

[*] ahtCommonFileOpenSave TrimNull(OFN.strFile)

 

[*] Else

 

[*] ahtCommonFileOpenSave "" 'alterado por JR.

 

[*] End If

 

[*]End Function

 

[*]

 

[*]

 

[*]Function ahtAddFilterItem(strFilter As String, _

 

[*] strDescription As String, Optional varItem As Variant) As String

 

[*]' Tack a new chunk onto the file filter.

 

[*]' That is, take the old value, stick onto it the description,

 

[*]' (like "Databases"), a null character, the skeleton

 

[*]' (like "*.mdb;*.mda") and a final null character.

 

[*]

 

[*] If IsMissing(varItem) Then varItem "*.*"

 

[*] ahtAddFilterItem = strFilter & _

 

[*] strDescription & vbNullChar & _

 

[*] varItem & vbNullChar

 

[*]End Function

 

[*]

 

[*]Private Function TrimNull(ByVal strItem As String) As String

 

[*]Dim intPos As Integer

 

[*] intPos InStr(strItem, vbNullChar)

 

[*] If intPos > 0 Then

 

[*] TrimNull left(strItem, intPos - 1)

 

[*] Else

 

[*] TrimNull = strItem

 

[*] End If

 

[*]End Function

 

[*]

 

Bem, depois, onde você precisar, coloque a seguinte instrução:

 

ValRet = GetOpenFile("C:\", "Titulo da janelinha que aparece.", "Todos os arquivos (*.*)", "*.*", Me.hWnd)

 

Ela retorna, na variável "ValRet", o caminho completo do arquivo que o cara selecionou.

=============== fim da primeira parte =================

 

Agora para importar segundo o arquivo que o cara escolheu, use o código a seguir:

 

DoCmd.TransferText acImportFixed, "Padrão de Importação", "Tabela pra onde vão os dados", ValRet

================ fim segunda parte ====================

 

Bem espero não ter ficado muito complicado. Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.