2015-11-20 4 views
0

(имейте в виду, что отбор следует избегать, он учится и получил помощь по другим связанным вопросам) Был бы очень благодарен за помощь по как перекодировать ниже, чтобы быть более «широким», и поскольку сейчас он иногда запускается, а иногда нет.Ошибка времени выполнения «1004» Определенная пользователем или объектная ошибка

Теперь он останавливается на четвертой строке с сообщением об ошибке, записанным в заголовке. Имейте в виду: Как вы можете видеть, записанный макрос при обновлении баз данных дает два разных типа кода, я предполагаю, что он должен быть с моими базами данных скопирован при выполнении различных excelversions ??? Может ли это быть написано одним способом? Публичный юг, который я могу позвонить?

Sheets("DB2 Totbel").Select 
    Selection.QueryTable.Refresh BackgroundQuery:=False 
    Sheets("DB2 Giva").Select 
    Selection.QueryTable.Refresh BackgroundQuery:=False 
    Sheets("TS4LAGER").Select 
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False 
    Sheets("PIX").Select 
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False 
    'Sheets("PIX").Select 
    'Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False 
    Sheets("OFO data").Select 
    Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False 

ответ

1

Вы хотите обновить все таблицы запросов в своем файле Excel? Вы можете закодировать это следующим образом:

Public Sub RefreshAllQueryTables() 
    Dim sh As Worksheet 
    Dim q As QueryTable 
    Dim l As ListObject 

    For Each sh In Worksheets 

     For Each q In sh.QueryTables 
      q.Refresh BackgroundQuery:=False 
     Next 

     For Each l In sh.ListObjects 
      For Each q In sh.QueryTables 
       q.Refresh BackgroundQuery:=False 
      Next 
     Next 
    Next 
End Sub 
+0

Да, я хотел бы, чтобы обновить все запросы во всех листах ... Но я получаю это на предложение ... Ошибка компиляции: Определяемый пользователем тип не определен – NewbieExcelVBA

+0

@ NewbieExcelVBA Да, это правильно, мы должны сосредоточиться на WorkSheets. Я обновил код. –

+0

При запуске нового кода будет обновлен запрос только первых двух листов. См. Мой старый код выше (записанный), он обновит «Db2 totbel» и «DB2 giva», другие будут перешагнуты в вашем новый код ... Как вы можете видеть, остальные из них имеют ListObject перед Querytable Sheets («DB2 Giva»). Выберите Selection.QueryTable.Refresh BackgroundQuery: = False Листы («TS4LAGER»). Выберите Selection.ListObject. QueryTable.Refresh BackgroundQuery: = False – NewbieExcelVBA

Смежные вопросы