Могу ли я импортировать CSV в MDB - PullRequest
0 голосов
/ 08 ноября 2019

код сначала изменяет файл dbf на csv.

Sub FindFiles()
    Dim strDocPath As String
    Dim strCurrntFile As String
    Dim Fname As String

strDocPath = "Y:\Eilat\Shapes\"
'strCurrentFile = Dir(strDocPath & "*.*")
strCurrentFile = Dir(strDocPath & "111.dbf")

    Workbooks.Open FileName:=strDocPath & strCurrentFile
    Fname = Left$(strCurrentFile, Len(strCurrentFile) - 4) & ".csv"
    ActiveWorkbook.SaveAs FileName:=strDocPath & Fname, FileFormat:=xlCSVMSDOS, CreateBackup:=False
    ActiveWorkbook.Close (True)


Dim filepath As String
Dim sqlinsert As String
Dim sqlvalue As String
Dim sqlquery As String
Dim sqlwhere As String

'Set db = CurrentDb
directory = "Y:\Eilat\Shapes\"
FileName = "111.csv" 
Set rs = CreateObject("ADODB.Recordset")
strcon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & directory & ";" _
& "Extended Properties=""text;HDR=Yes;FMT=Delimited"";"
'strSQL = "SELECT * FROM " & FileName
'rs.Open strSQL, strcon
'rs.MoveFirst
Dim strTextLine As String
Dim aryMyData() As String


Open directory & FileName For Input As #1
Do While Not EOF(1)             ' Loop until end of file.
    Line Input #1, strTextLine   ' Read line into variable.
    aryMyData = Split(strTextLine, ",") 'Split text into array by comma

'(длина csv изменяется, например, это столбцы в csv, но может быть длиннее. EHANDLE, UseCode, UseCode2, Descriptio, Gush, Helka, Owner, OwnerID, Holder, HolderID, Floor, PhysicalNo, Date, Area, Comments, Address, StreetName, HouseNo, Phone, Fax, Email, Manager, Business, SerialNo, MeasuredBy, Height, BlockNo, Mapkey, User1, User2, user3 - это столбцы в csv, но они могут быть длиннее.

strSQL = "?? (какой SQL-оператор нужен ??)

(не знаю, как выполнить импорт в mdb" Y: \ Eilat \ Arnona \ Eilat.mdb ")

Debug.Print strSQL
DoCmd.RunSQL strSQL

Loop
Close
End Sub

1 Ответ

0 голосов
/ 08 ноября 2019

С допущениями:

  • Ваш код правильно открывает CSV-файл и читает строку за строкой
  • Все поля вашей таблицы имеют тип String
  • Ваша таблицаимеет поля Field_01, Field_02, Field_03, в которые вы хотите импортировать столбцы 1, 2 и 3 файла CSV

Вы можете использовать

DoCmd.RunSQL "INSERT INTO MyTable (Field_01, Field_02, Field_03) VALUES ('" & aryMyData(0) & "','" & aryMyData(1) & "','" & aryMyData(2) & "'")

и расширять по мере необходимости для всехваши поля и столбцы.

Это очень простой пример, предполагающий, что ваша таблица специально подготовлена ​​для импортируемого вами файла CSV. Если вы ожидаете, что дизайн таблицы изменится в соответствии с импортируемым CSV-файлом, это будет намного сложнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...