Importera textfiler till Access
Jag vill importera ett störra antal TXT-filer till en Acessdatabas.
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...
/MiZ
Svara
Sv: Importera textfiler till Acess
Lyckades lösa fråga 1 själv genom
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?
Svara
Sv:Importera textfiler till Acess
Hej Michael,
"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
Dennis
Svara
Sv: Importera textfiler till Acess
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.
/MiZ
Svara
Sv:Importera textfiler till Acess
Michael,
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | 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
Svara
Sv: Importera textfiler till Acess
Tack Dennis!
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
Svara