Jag vill importera ett störra antal TXT-filer till en Acessdatabas. Lyckades lösa fråga 1 själv genom Hej Michael, Det är importen via SQL som tar för lång tid, skulle vilja definiera mina Import Specifications i VBA och inte ha dem i databasen. Michael, Tack Dennis!Importera textfiler till Access
Har lyckats göra detta i Access genom att använda Import Specifications i ett macro.
Nu vill jag dock starta detta macro från Excel (VBA) och helst kunna specificera innehållet i Import Specifications, så:
Fråga 1: Hur startar jag ett macro i en Access-databas från Excel?
Fråga 2: Kan jag i Excel specificera hur TXT-filen skall importeras (utan att loopa igenom filen - tar för lång tid), och inte använda Access mer än som slutmål?
Hoppas någpn förstår mitt problem...
/MiZSv: Importera textfiler till Acess
Set accObject = CreateObject("Access.Application")
accObject.Visible = False
accObject.OpenCurrentDatabase (TEST.MDB")
accObject.DoCmd.RunMacro "Import"
accObject.CloseCurrentDatabase
Set accObject = Nothing
någon som vet mer om fråga 2?Sv:Importera textfiler till Acess
"Fråga 2: Kan jag i Excel specificera hur TXT-filen skall importeras (utan att loopa igenom filen - tar för lång tid), och inte använda Access mer än som slutmål?"
Din fråga är lite väl generell och för bred för att kunna besvara men har du övervägt att importera textfilens data mha ADO & SQL?
Mvh
DennisSv: Importera textfiler till Acess
/MiZSv:Importera textfiler till Acess
OK, nu förstår jag situationen bättre.
Nedan ser du ett exempel på hur det kan ställas upp. Textfiler kan lätt vara 'knöliga' i detta sammanhang men du borde redan ha en fungerande lösning där SQL-strängen är definierad:
Option Explicit
'Sätt en referens till Microsoft ActiveX Data Object x.x via
'Verktyg | Referenser i VB-editorn.
Dim cnt As ADODB.Connection
Const stTitle As String = "Import av data"
Const stSQL = "INSERT INTO Tbl_Test " & _
"SELECT * FROM " & _
"[Text;DATABASE=c:\Dennis].[Test.txt];"
Const stCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Dennis\db1.mdb;" & _
"Persist Security Info=False"
Sub SQL_Update()
On Error GoTo Error_Handling
Set cnt = New ADODB.Connection
With cnt
.Open stCon
.Execute (stSQL)
End With
ExitHere:
Set cnt = Nothing
Exit Sub
Error_Handling:
If Err.Number = 53 Then
MsgBox "Filen Test.Txt kan inte hittas, var vänlig ange korrekt sökväg.", _
vbInformation, stTitle
Resume ExitHere
Else
MsgBox "Följande fel har inträffat :" & vbCrLf & _
"Fel : " & Err.Description & " " & Err.Number & " " & Err.Source, _
vbCritical, stTitle
Resume ExitHere
End If
End Sub
Testa och hör av dig om utfallet.
Mvh
Dennis
Sv: Importera textfiler till Acess
Några kommentarer/problem dock:
- Ändrade SQL-n till "SELECT * INTO Tbl_Test FROM..." då testtabellen ju inte finns.
- Jag vill kunna specifiera till vilka fält vilka tecken i filen skall läsas, hur
Början på filen ser ut så här:
ABC 123 4E
CCC 444 53
ABC 222 GG osv.
Jag vill alltså att radens första 8 tecken (ABC" skall importeras till ett textfält med längden 255 tecken.
(Nu läser den bara en första kolumnen, ABC,CCC,ABC , i ett fält som heter som första posten, ABC)
Hoppas Du förstår.
/MiZ