Первая строка данных не показывает правильные данные - PullRequest
0 голосов
/ 25 января 2019

Я перебираю и связываю файлы Excel.Иногда есть данные с верхней строкой, имеющей названия заголовков.Проблема в том, что когда имена столбцов похожи на «date», «upc», «quatity», тогда, когда они ссылаются на то, что показано в ячейке, это «#Num!».Как я могу обойти это так, чтобы я увидел «дату» и другие имена полей .?

   Set wkb = objXL.Workbooks.Open(strFileName)
   ShtCount = wkb.Sheets.count
   i = 1
   x = 1

   For Each wks In wkb.Worksheets
        ' Link each sheet of the entire Spreadsheet file -----------------------
        'DoCmd.TransferSpreadsheet acLink, , _
        '      shortFilename & "_~" & wks.Name, strFileName, False, wks.Name & "$"

        'Progress Bar :::::::::::::::::::::::::::::::::::::
        RetVal = SysCmd(acSysCmdInitMeter, "Linking FILE: " & PathFilename & " - SHEET: " & Trim(str(x)) & " of " & Trim(str(ShtCount)), ShtCount)
        'Update the progress meter.
        RetVal = SysCmd(acSysCmdUpdateMeter, i)

        'TabName = wks.Name
        DoCmd.TransferSpreadsheet acLink, , _
              "TmpLinkXLS", strFileName, False, wks.Name & "$"

        ' Get the list of field names
        'Set tdf = db.TableDefs("[" & shortFilename & "_~" & wks.Name & "]")
        Set tdf = db.TableDefs("TmpLinkXLS")

        ' ---- Pause 1 second ------
        Const cTIME = 1000 'in MilliSeconds
        Call sSleep(cTIME)

        myfields = ""
        For Each fld In tdf.Fields
            myfields = myfields & "[" & fld.Name & "],"
        Next
        'myfields = Mid(myfields, 1, Len(myfields) - 1)
        i = i + 1
        RetVal = SysCmd(acSysCmdInitMeter, "Inserting FILE: " & PathFilename & " - SHEET: " & Trim(str(x)) & " of " & Trim(str(ShtCount)), ShtCount)
        'Update the progress meter.
        RetVal = SysCmd(acSysCmdUpdateMeter, i)

        ' Insert the data from the sheet into the local XLSData Table --------------------------
        'strsql = "Insert Into XLSData(" & myfields & "Fullimagepath,TabName" & ") Select " & myfields & Chr(34) & strFileName & Chr(34) & " as Fullimagepath, " & wks.Name & " as TabName From [" & shortFilename & "_~" & wks.Name & "] "
        strsql = "Insert Into XLSData(" & myfields & "Fullimagepath,TabName" & ") " & _
                    " Select " & myfields & Chr(34) & strFileName & Chr(34) & " as Fullimagepath, " & Chr(34) & wks.Name & Chr(34) & " as TabName " & _
                    " From TmpLinkXLS As x1 " & _
                    " Where Len(Trim(x1.F1)) > 0 OR Len(Trim(x1.F2)) > 0 OR Len(Trim(x1.F3)) > 0 OR Len(Trim(x1.F4)) > 0 OR Len(Trim(x1.F5)) > 0 OR Len(Trim(x1.F6)) > 0 OR Len(Trim(x1.F7)) > 0 OR Len(Trim(x1.F8)) > 0 OR Len(Trim(x1.F8)) > 0 "
        CurrentDb.Execute strsql, dbFailOnError

        ' ---- Pause 1 second ------
        'Const cTIME = 1000 'in MilliSeconds
        Call sSleep(cTIME)

        i = i + 1
        RetVal = SysCmd(acSysCmdInitMeter, "Dropping TmpLinkXLS", ShtCount)
        'Update the progress meter.
        RetVal = SysCmd(acSysCmdUpdateMeter, i)

        If TableExists("TmpLinkXLS") Then
            CurrentDb.Execute "Drop Table TmpLinkXLS", dbFailOnError
        End If

        Set tdf = Nothing

        RetVal = SysCmd(acSysCmdInitMeter, " ", 0)
        RetVal = SysCmd(acSysCmdRemoveMeter)

        i = 1
        x = x + 1

        'DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
        '      wks.Name, strFileName, True, wks.Name & "$"
   Next

1 Ответ

0 голосов
/ 25 января 2019

Каким-то образом вы должны знать, а затем указать, что в первой строке содержатся заголовки, задав для этого аргумента значение True :

DoCmd.TransferSpreadsheet acLink, , "TmpLinkXLS", strFileName, True, wks.Name & "$"
...