Перебор столбцов в Excel - PullRequest
0 голосов
/ 26 марта 2019

Я написал простой сценарий VBA, который открывает все файлы .xls в заданной папке и копирует столбец А. Я хочу вставить эту информацию в уникальный столбец моей рабочей книги. Я не могу перебирать столбцы очень легко, поэтому в цикле ниже я просто вставляю все в один и тот же столбец. Я просто не могу понять, как обновить столбец, в который я хочу вставить. Если бы я перебирал строки, это было бы просто, это был бы Range («A» и LastRow), но столбцы выглядели бы хитрее. В цикле ниже все вставляется в столбец A целевой книги (переменная wkbDest).

Dim wkbDest As Workbook
Dim wkbSource As Workbook 'Source workbooks
Set wkbDest = ThisWorkbook
Const strPath As String = "C:\SecretPath\"
Const sheetName As String = "MacroResults"
Const xlsPattern As String = "*.xls"
ChDir strPath
strExtension = Dir(xlsPattern)
Dim lastColumn As Long 'variable that will be the counter to iterate over the columns
lastColumn = 0
wkbDest.Sheets(sheetName).Cells.Clear
wkbDest.Sheets(sheetName).Range("A1").Value = "Extraction Results"
Do While strExtension <> ""
    Set wkbSource = Workbooks.Open(strPath & strExtension)
    With wkbSource
    lastColumn = lastColumn + 1
    wkbSource.Sheets("Test_1").Columns("A:A").Copy

Я пробовал wkbDest.Sheets(sheetName).Range("A1").OffSet(0,lastColumn).PasteSpecial и вместо Range Columns(lastColumn), но, похоже, ничего не работает.

    wkbDest.Sheets(sheetName).Range("A1").PasteSpecial xlPasteValues
    .Close savechanges:=True
    End With
    strExtension = Dir()
Loop

1 Ответ

1 голос
/ 26 марта 2019

добавьте это в свой код, заменив строку вставки.

' convert the lastColumn into its letter, and then use it
Dim vArr as Variant, Col_Letter as string
vArr = Split(Cells(1, lastColumn ).Address(True, False), "$")
Col_Letter = vArr(0)

wkbDest.Sheets(sheetName).Range(Col_Letter & "1").PasteSpecial xlPasteValues
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...