Ваш код:
- объявляет и присваивает
objWBtoAdd
и newWS
, но они нигде не используются - переменные
i
и cell
также не используются - Он просто пытается присвоить недопустимый диапазон
.Range("b2:b").Value
другой переменной Range - Затем переменная Range возвращается к недопустимому диапазону без изменения значений
Эта запись не является допустимой. Диапазон: .Range("b2:b")
- Он должен содержать адрес 1-й ячейки -
"B2"
& ":"
& "B9"
(адрес последней ячейки в диапазоне)
Если вам нужно "обновить второй столбец, добавив апостроф в начало каждой ячейки в диапазоне" и скопировать столбец на новый лист, попробуйте код ниже
Option Explicit
Private Sub cmdTest_Click()
Const INI_PATH = "C:\TEST\Drop\Bank.xlsx"
Const NEW_PATH = "C:\TEST\Drop\BankNew.xlsx"
Dim xlApp As Excel.Application: Set xlApp = New Excel.Application
Dim wbIni As Excel.Workbook: Set wbIni = xlApp.Workbooks.Open(INI_PATH, , False)
Dim wbNew As Excel.Workbook: Set wbNew = xlApp.Workbooks.Add
Dim ws As Excel.Worksheet, colBIni As Range, colBNew As Range, lr As Long
'xlApp.Visible = True
Set ws = wbIni.ActiveSheet 'Prefer explicit: Set ws = wbIni.Worksheets("Sheet3")
lr = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
Set colBIni = ws.Range(ws.Cells(2, "B"), ws.Cells(lr, "B"))
Set ws = wbNew.ActiveSheet 'Prefer explicit: Set ws = wbNew.Worksheets("Sheet1")
Set colBNew = ws.Range(ws.Cells(2, "B"), ws.Cells(lr, "B"))
Dim arr As Variant, r As Long
arr = colBIni.Value2 'copy colB to array
For r = 1 To UBound(arr)
arr(r, 1) = "'" & arr(r, 1) 'modify array values
Next
'colBIni.Value2 = arr 'paste array to colB (Ini file)
colBNew.Value2 = arr 'paste array to colB (New file)
wbNew.Close SaveChanges:=True, Filename:=NEW_PATH 'Save new File
wbIni.Close SaveChanges:=False
End Sub
.
Если столбец B содержит только формулы или URL-адреса, вам не нужно использовать цикл For
With ws.UsedRange.Columns("B") 'all cells with data (and formatting) in column B
.Replace "=", "'="
.Replace "https://", "'https://"
End With