Excel объект не поддерживает это свойство или метод

I am working on a code that will collate data from multiple workbooks in a folder in to one single sheet.
Now, I am trying to make the code read through all the worksheets in the workbooks with the below code. I get the error — «Object Doesnt support this property or method» in the highlighted line.

For Each objFile In objFolder.Files

RowCount = ws1.UsedRange.Rows.Count

If objFile.Type = "Microsoft Excel Worksheet" Or objFile.Type = "Microsoft Excel Macro-Enabled Worksheet" Then

Set wb = Application.Workbooks.Open(path & objFile.Name)

For Each ws_cnt In wb '<---Error here.

Set srWS = wb.Sheets(1)

Comintern's user avatar

Comintern

21.7k5 gold badges33 silver badges80 bronze badges

asked Jan 4, 2017 at 14:33

Sudharshan's user avatar

1

For Each ws_cnt In wb.Worksheets

You need to specify the collection that you wish to iterate over, so in this instance it is the wb.Worksheets collection.

Then you can just work with the worksheet.

ws_cnt.Range("A1").Copy

answered Jan 4, 2017 at 14:35

luke_t's user avatar

luke_tluke_t

2,9153 gold badges22 silver badges38 bronze badges

Добрый день.

Пример пока не могу вложить, поэтому постараюсь подробно изложить проблему:

При помощи PQ обработал 4 отчета в одном файле, но на разных вкладках, но между собой пока не объединял, а вот 5 не хочет загружаться.
Ошибка возникает тогда, когда я делаю импорт из экселя, выбираю лист и все на этом останавливается.
Замечу, что все отчеты я хочу обработать в одном эксель файле, но в разных листах. 4 работают, а 5-й нет.
НО, если создать новый файл и импортировать тот неработающий файл, тогда все работает.
Формат один и тот же, это не сводные таблицы или что-то еще, а просто значения в экселе. Размер 5го файла самый маленький среди всех.
Я попытался выбрать другой, 6-й файл, но проблема остается и на 6-м файле.
Выходит следующее предупреждение  с дополнительного окошка:

Сообщение с веб-страницы.
Объект не поддерживает свойство или метод «widget»

TypeError: Объект не поддерживает свойство или метод «widget» at Anonymous function
TypeError: Объект не поддерживает свойство или метод «widget» at Global code
TypeError: Объект не поддерживает свойство или метод «widget» at window.onerror

Может у PQ имеется лимит по загрузке строк или еще что-то подобное.
Может кто сталкивался и сможет помочь?

the line that is giving me trouble is «»Sheets(CStr(WS_M.Cells(n, START_C))).Cells(n, START_C).Paste»»

this is supposed to find the tab name in column 3 and go to that tab and paste the tab name in that tab.

    Const START_C = 3
    Const MAX_TRAN = 1000
    Const START_R = 2
    Const MASTER = "MASTER"

    Sub MOVEDATACORRECTLY()

    Dim WS_M As Worksheet
    Dim thisWB As Workbook
    Set thisWB = ActiveWorkbook
    Set WS_M = Worksheets(MASTER)

    For M = START_R To (START_R + MAX_TRAN)
        If WS_M.Cells(M, (START_C + 1)) = "" Then Exit For

    Next M

    M = M - 1

    For n = START_R To M
       WS_M.Cells(n, START_C).Copy
       Sheets(CStr(WS_M.Cells(n, START_C))).Cells(n, START_C).Paste      

    Next n

    End Sub

Siddharth Rout's user avatar

asked Jul 30, 2012 at 22:30

user1564251's user avatar

1

Try this instead:

For n = START_R To M
       WS_M.Cells(n, START_C).Copy
       Sheets(CStr(WS_M.Cells(n, START_C))).Cells(n, START_C).Select
       ActiveSheet.Paste
Next n

If you look at the documentation for the Excel Range object, Paste is not in the list of members. There is PasteSpecial, however. I haven’t experimented with that, but that might also work.

answered Jul 30, 2012 at 22:40

devuxer's user avatar

devuxerdevuxer

41.4k47 gold badges178 silver badges291 bronze badges

1

For copying a range of cells in Excel, using Copy method makes the VBA program easier to crash / or to give inpredictable results.

Suppose during the your procedure copies data from system clipboard and user was trying to store some other to system clipboard!

Not always, but from users this kind of mistake might happened.

So I always prefer to use a better approach, something like Swaping the range on the fly. Here’s a small demonstration:

Public Sub Sample_Copy_without_Clipboard()
    Dim dRange As Range, iRange As Range
    Set iRange = Range("A1:B3")
    Set dRange = Range("D1:E3")
    dRange.Value = iRange.Value
End Sub

Note: This method works only with unformatted textual data. If not then either use Tim’s suggestion or DanM’s answer.

Community's user avatar

answered Jul 31, 2012 at 5:33

Cylian's user avatar

CylianCylian

10.8k4 gold badges43 silver badges55 bronze badges

В объектной модели нет необходимости в функции Address, поэтому ее нет в интерфейсе WorksheetFunction.

Эмпирическое правило: если вы выполняете вызов члена с ранней привязкой, а член, который вы хотите вызвать, не отображается в списке имен автодополнения, он не является членом объекта, с которым вы работаете; если код все равно скомпилируется, есть большая вероятность, что во время выполнения он выдаст ошибку 438.

Нет необходимости в Address-функции, потому что, когда вы работаете с объектной моделью, у вас есть Range-объект, а Range имеет легкодоступное Address-свойство: WorksheetFunction для него было бы совершенно лишним.

Вы знаете, из какого листа взят диапазон (sheetname); вы знаете, какую строку вы хотите (AT_rownum), и вы знаете, какой столбец вы хотите (1) — таким образом:

Dim AT_range As Range
Set AT_range = ThisWorkbook.Worksheets(sheetName).Cells(AT_rownum, 1)

AT_cellnum = AT_range.Address

Но, как намекнул Скотт, адрес ячейки редко является чем-то, что вы нужно в VBA: если у вас есть объект Range, у вас, вероятно, уже есть все, что вам нужно.

Появилось сообщение «Объект не поддерживает свойство или метод GetElementsByClassName»

При открытии входящего документа появилось сообщение «Объект не поддерживает свойство или метод GetElementsByClassName».

Причина №1. Вы используете неактуальную версию платформы 1С

Обновите платформу 1С.

Причина №2. На компьютере отсутствует браузер Internet Explorer, либо его версия ниже 11

Решение №1. Установите Internet Explorer 11 версии

Решение №2. Создайте эмуляцию Internet Explorer 11 версии

  1. Запустите командную строку, введите «regedit» и нажмите <Enter>.
  2. Откройте каталог «HKEY_CURRENT_USERSOFTWAREMicrosoftInternet ExplorerMainFeatureControlFEATURE_BROWSER_EMULATION».
  3. Кликните правой кнопкой мыши и выберите «Создать/Параметр DWORD (32 бита)».

  4. Введите в списке имя вашего приложения 1С в виде «*.exe», где «*» — имя, «*.exe» — расширение. Например, «1cv8.exe» или «1cv7.exe».
    • Как узнать имя приложения?
  5. Откройте параметр двойным кликом мыши и укажите:
    • «Система исчисления» — шестнадцатеричная;
    • «Значение» — 11001.

  6. Нажмите «ОК» и перезапустите 1С.

Для 1С версии 7.7 создайте еще один параметр с именем «1cv7s.exe».

Нашли неточность? Выделите текст с ошибкой и нажмите ctrl + enter.

Понравилась статья? Поделить с друзьями:
  • Excel объединение ячеек одной кнопкой
  • Excel объединение ячеек неактивно
  • Excel объединение ячеек в текстовую строку
  • Excel объединение ячеек быстро
  • Excel объединение текста ячеек в одной