Вставить конкретные ячейки CSV в таблицу MS Access vba - PullRequest
0 голосов
/ 14 ноября 2018

Привет! Итак, я пытался обновить стиль csvs, с которым мы работаем. В настоящее время стиль не может быть прочитан для импортера, поэтому id нужно написать несколько vba, чтобы получить конкретные ячейки для перехода в столбцы.

Например, название компании: A1

Yr1 это F25, YR2 это E25, YR3 это D25, YR4 это C25 и YR5 это B25 * Это все даты

Общий объем продаж YR1 - это F28, YR2 E28 и т. Д., Надеюсь, этого было достаточно в качестве примера.

Таким образом, vba должен был бы открыть CSV и выбрать ячейки на основе диапазона, который я представляю, а затем получить значение и затем поместить его в правильный столбец.

Надеюсь, этого было достаточно, чтобы понять, что я хотел бы сделать. В самом CSV нет заголовков столбцов.

Я представлял себе нечто подобное

Dim CombLoop As Integer
Dim CSVCn As Object
Dim rsCSV As Object
Dim strSql, CombFileName, GotoRange As String
Dim rs As DAO.Recordset

Set CSVCn = CreateObject("ADODB.Connection")
Set rsCVS = CreateObject("ADODB.Recordset")

'CSVCn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Q:\DATA\0091823.csv; Extended Properties = CSV;"

CSVCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=Q:\UPDACOS\04369248.csv;" & _
"Extended Properties= Comma delimited;"

strSql = "SELECT * FROM [a1..f75];"
rsCSV.Open strSql, CSVCn, adOpenStatic

Set rs = CurrentDb.OpenRecordset("Select * From dbo_UpdatedRegtemp;")

If Not (rsCSV.EOF And rsCSV.BOF) Then
    FindRecordCount = rsCSV.RecordCount
    rsCSV.MoveFirst
    Do Until rsCSV.EOF = True
        Field1 = rsCSV![A1]
        Field3 = rsCSV![A2]
        Field2 = rsCSV![A3]
        rs.AddNew
        rs![Reg# Number] = Field1
        rs![Company Name] = Field2
        rs.Update
    rsCSV.MoveNext
    Loop
End If

cSVCn.Close
Set rsCSV = Nothing
Set CSVCn = Nothing
rs.Close

Приветствия

1 Ответ

0 голосов
/ 14 ноября 2018
        Sub CSVData()
        Dim con As ADODB.Connection
        Dim rs As ADODB.Recordset

        Set con = New ADODB.Connection
        Set rs = New ADODB.Recordset

        Dim currentDataFilePath As String
        Dim currentDataFileName As String
        Dim nextRow As Integer
        Dim emptystr As String
         '"H:\projectfiles\csv\", "Book.csv"
        currentDataFilePath = ("H:\projectfiles\csv\")
        currentDataFileName = ("Book.csv")
         emptystr = "NULL"


        con.Provider = "Microsoft.Ace.OLEDB.12.0"
        con.ConnectionString = "Data Source=" & currentDataFilePath & ";" & "Extended Properties=""text;HDR=Yes;FMT=Delimited;"""
        'MsgBox currentDataFilePath

        con.Open

        rs.Open "SELECT * FROM [" & currentDataFileName & "] ", con
        rs.MoveFirst
        'nextRow = Worksheets("Sheet3").UsedRange.Rows.Count + 1
        'Worksheets("Sheet3").Cells(nextRow, 1).CopyFromRecordset rs

        'MsgBox rs.RecordCount
        With rs
        Do Until .EOF

        'check the field is not null before process

         If Not IsNull(rs(0)) Then
         custordernum = rs(0)
         End If

         If Not IsNull(rs(1)) Then
        ContactNAme = "" & Replace(rs(1), "'", " ")

        Else
        ContactNAme = emptystr
        End If

        If Not IsNull(rs(2)) Then
        colladd1 = "" & Replace(rs(2), "'", " ")
        Else
        colladd1 = emptystr
        End If
        MsgBox colladd1
        .MoveNext
        Loop
         End With


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