Я пытаюсь автоматизировать преобразование (столбец в строку) данных Excel, и я создал Macro для того, что работает отлично.Но я боюсь, что, если записи превышают максимальную емкость строки в Excel.Есть ли альтернативный способ сделать это.Возможно ли, что если записи превышают один лист, он должен заполнить записи на другом листе или в другом файле Excel.
Sub macro_generate()
Dim maxRows As Long
Dim maxCols As Long
Dim data As Variant
Dim path As String
Dim openWb As Workbook
Dim openWs As Worksheet
path = "D:\Informatica\9.6.1\server\infa_shared\NL_Power_Exposure\bespoke.xlsx"
Set openWb = Workbooks.Open(path)
Set openWs = openWb.Sheets("Sheet1")
maxRows = openWs.Cells(1, 1).End(xlDown).row
maxCols = openWs.Cells(1, 1).End(xlToRight).Column
data = Range(Cells(1, 1), Cells(maxRows, maxCols))
Dim newSht As Worksheet
Set newSht = Sheets.Add
ActiveSheet.Range("A:A").Select
Selection.NumberFormat = "@"
With newSht
.Cells(1, 1).Value = "IMPORTID"
.Cells(1, 2).Value = "DT"
.Cells(1, 3).Value = "READING"
' .Cells(1, 4).Value = "Linien Name"
' .Cells(1, 5).Value = "Einheit"
' .Cells(1, 6).Value = "Date"
'.Cells(1, 7).Value = "Value"
Dim writeRow As Long
writeRow = 2
Dim col As Long
col = 2
Dim counter As Long
counter = 2
Dim row As Long
Do While True
row = 2
Do While True
'IMPORTID
.Cells(writeRow, 1).Value = data(1, col)
'DT
.Cells(writeRow, 2).Value = data(row, 1)
'READING
.Cells(writeRow, 3).Value = data(row, col)
writeRow = writeRow + 1
counter = counter + 1
If row = maxRows Then Exit Do 'Exit clause
row = row + 1
Loop
If col = maxCols Then Exit Do 'exit cluase
col = col + 1
Loop
End With
openWb.Save
openWb.Close
End Sub
ИСТОЧНИК ФАЙЛ
COLA | COLB | COLC
1-Jan-18| C1 | D1
2-Jan-18| C2 | D2
3-Jan-18| C3 | D3
ОЖИДАЕМЫЙ ФАЙЛ
COLA | COLB
1-Jan-18| C1
2-Jan-18| C2
3-Jan-18| C3
1-Jan-18| D1
2-Jan-18| D2
3-Jan-18| D3