каталог vlookup, указывающий на конкретный каталог - PullRequest
0 голосов
/ 26 декабря 2018

У меня возникла эта проблема при запуске моего VBA-сценария.Предполагается открыть 4 файла Excel и один шаблон с макросом.Затем он активирует макрос и заполняет каждую таблицу vlookup в конкретный файл Excel.2 листа имеют 3 столбца, 2 столбца ищут 1 файл Excel, а третий столбец ищет 2 файл Excel.Но когда я запускаю скрипт, первые 2 столбца - это #NA, тогда как в 3-м столбце есть каталог с файлом Excel.Когда я делаю это вручную (вручную откройте все 4 файла Excel и нажмите кнопку для запуска макроса), он успешно заполнит все 3 столбца для обоих листов.В чем может быть проблема?Я искал и vlookup ищет открытые файлы Excel, поэтому я открываю 4 файла Excel перед запуском макроса для заполнения таблиц.Это мой сценарий VBA:

Option Explicit

Dim xlApp, xlBook, shell
Dim folderPath


' Set shell = CreateObject("WScript.Shell")   
' shell.Run "C:\Users\NLTAdmin\Desktop\Extraction_Automation\TABLE_COUNT_SCRIPT\All_in_one.bat", 1, True


folderPath = "C:\Users\NLTAdmin\Desktop\Extraction_Automation\TABLE_COUNT_SCRIPT\"

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.DisplayAlerts = False

xlApp.Workbooks.Open(folderPath & "Assetco\Assetco.csv")
xlApp.Workbooks.Open(folderPath & "BIOS\BIOS.csv")
' xlApp.Workbooks.Open(folderPath & "FDS\FDS.csv")
' xlApp.Workbooks.Open(folderPath & "FTTH\FTTH.csv")
' xlApp.Workbooks.Open(folderPath & "FTTH_Filter\ftth_union_filter_queries.csv")
' xlApp.Workbooks.Open(folderPath & "Gtech_Filter\Gtech_filter_queries.csv")
' xlApp.Workbooks.Open(folderPath & "Gtechv1\Gtech.csv")
' xlApp.Workbooks.Open(folderPath & "MARS\MARS.csv")
' xlApp.Workbooks.Open(folderPath & "MARS_Filter\mars_filter_queries.csv")
' xlApp.Workbooks.Open(folderPath & "WOMS\WOMS.csv")
' xlApp.Workbooks.Open(folderPath & "Workflow\WORKFLOW.csv")
' xlApp.Workbooks.Open(folderPath & "Workflow_Filter\workflow_filter_queries.csv")

folderPath = "C:\Users\NLTAdmin\Desktop\Extraction_Automation\Union_queries\"

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.DisplayAlerts = False

xlApp.Workbooks.Open(folderPath & "ASSETCO_union.csv")
xlApp.Workbooks.Open(folderPath & "BIOS_union.csv")
' xlApp.Workbooks.Open(folderPath & "FDS_union.csv")
' xlApp.Workbooks.Open(folderPath & "FTTH_union.csv")
' xlApp.Workbooks.Open(folderPath & "GTECH_union.csv")
' xlApp.Workbooks.Open(folderPath & "MARS_union.csv")
' xlApp.Workbooks.Open(folderPath & "WOMS_union.csv")
' xlApp.Workbooks.Open(folderPath & "WORKFLOW_union.csv")

set xlBook = xlApp.Workbooks.Open("C:\Users\NLTAdmin\Desktop\Extraction_Automation\extraction_report_template.xlsm",0,True)
xlApp.Run "Macro1"

xlApp.DisplayAlerts = True
xlApp.Quit

Set xlApp = Nothing

WScript.Quit

В первом файле Workbooks.open предполагается открыть файлы Excel, чтобы заполнить первые 2 столбца, тогда как во втором файле Workbooks.Open необходимо заполнить третий столбец.Только 3-й столбец заполняется.3-й столбец содержит каталог файлов и заполняется: 3rd column has the file directory 1-й и 2-й столбец не найден 1st column

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Excel в VBScript

Option Explicit

Dim xlApp, xlBook, shell
Dim folderPath

'  Set shell = CreateObject("WScript.Shell")
'  shell.Run "C:\Users\NLTAdmin\Desktop\Extraction_Automation\ _
'      & "TABLE_COUNT_SCRIPT\All_in_one.bat", 1, True

  folderPath = "C:\Users\NLTAdmin\Desktop\Extraction_Automation\" _
      & "TABLE_COUNT_SCRIPT\"

  ' To avoid multiple instances of Excel, when it is running,
  ' the GetObject Method has to be used, but when Excel is not running
  ' the CreateObject Method has to be used to open it.
  On Error Resume Next
  ' When Excel is running:
  Set xlApp = GetObject(, "Excel.Application")      ' Excel is running
  If Err Then
    Set xlApp = CreateObject("Excel.Application")   ' Excel not running.
  End If
  On Error GoTo 0

  With xlApp
    .Visible = True
    .DisplayAlerts = False

    .Workbooks.Open (folderPath & "Assetco\Assetco.csv")
    .Workbooks.Open (folderPath & "BIOS\BIOS.csv")
' .Workbooks.Open(folderPath & "FDS\FDS.csv")
' .Workbooks.Open(folderPath & "FTTH\FTTH.csv")
' .Workbooks.Open(folderPath & "FTTH_Filter\ftth_union_filter_queries.csv")
' .Workbooks.Open(folderPath & "Gtech_Filter\Gtech_filter_queries.csv")
' .Workbooks.Open(folderPath & "Gtechv1\Gtech.csv")
' .Workbooks.Open(folderPath & "MARS\MARS.csv")
' .Workbooks.Open(folderPath & "MARS_Filter\mars_filter_queries.csv")
' .Workbooks.Open(folderPath & "WOMS\WOMS.csv")
' .Workbooks.Open(folderPath & "Workflow\WORKFLOW.csv")
' .Workbooks.Open(folderPath & "Workflow_Filter\workflow_filter_queries.csv")

    folderPath = "C:\Users\NLTAdmin\Desktop\Extraction_Automation\" _
        & "Union_queries\"

    .Workbooks.Open (folderPath & "ASSETCO_union.csv")
    .Workbooks.Open (folderPath & "BIOS_union.csv")
' .Workbooks.Open(folderPath & "FDS_union.csv")
' .Workbooks.Open(folderPath & "FTTH_union.csv")
' .Workbooks.Open(folderPath & "GTECH_union.csv")
' .Workbooks.Open(folderPath & "MARS_union.csv")
' .Workbooks.Open(folderPath & "WOMS_union.csv")
' .Workbooks.Open(folderPath & "WORKFLOW_union.csv")

    Set xlBook = .Workbooks.Open(folderPath _
        & "extraction_report_template.xlsm", 0, True)
    .Run "Macro1"

    .DisplayAlerts = True
    .Quit

  End With

  Set xlApp = Nothing

  WScript.Quit
0 голосов
/ 26 декабря 2018

Вы создаете несколько экземпляров Excel.Ликвидация всего, кроме первого CreateObject("Excel.Application") '

 Set xlApp = CreateObject("Excel.Application")
...