Excel 将数据列从一个工作簿复制到编译工作簿时不跳过列
我正在从几个不同的数据库导入数据,并将它们合并到一个简单的报告中,但是所有的数据库都有不同的布局。例如,第一个数据库的名称在第1列,第二个数据库的名称在第2列 我在论坛上找到了一些很好的例子,但是将它们与进口商联系起来并没有产生正确的结果 这段代码以正确的顺序调用我需要的所有列,但是它将它们全部放在一列中Excel 将数据列从一个工作簿复制到编译工作簿时不跳过列,excel,vba,Excel,Vba,我正在从几个不同的数据库导入数据,并将它们合并到一个简单的报告中,但是所有的数据库都有不同的布局。例如,第一个数据库的名称在第1列,第二个数据库的名称在第2列 我在论坛上找到了一些很好的例子,但是将它们与进口商联系起来并没有产生正确的结果 这段代码以正确的顺序调用我需要的所有列,但是它将它们全部放在一列中 Sub importoer() Dim wb1 As Workbook Dim wb2 As Workbook Dim Sheet As Worksheet Dim PasteStart As
Sub importoer()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim Sheet As Worksheet
Dim PasteStart As Range
Dim v As Long, vcols As Variant
Set wb1 = ActiveWorkbook
Set PasteStart = [oer!A1]
vcols = Array(1, 2, 11, 4, 6, 7, 10, 3) 'columns to copy in this order
Sheets("oer").Select
Cells.Select
Selection.ClearContents
FileToOpen = Application.GetOpenFilename _
(Title:="Please choose OER File", _
FileFilter:="All Files (*.*),*.*")
If FileToOpen = False Then
MsgBox "No File Specified.", vbExclamation, "ERROR"
Exit Sub
Else
Set wb2 = Workbooks.Open(Filename:=FileToOpen)
For Each Sheet In wb2.Sheets
With Sheet.UsedRange.Cells(1, 1).CurrentRegion
For v = LBound(vcols) To UBound(vcols)
.Columns(vcols(v)).Copy
PasteStart.PasteSpecial xlPasteValues
Set PasteStart = PasteStart.Offset(.Rows.Count)
Next v
'.Copy
End With
Next Sheet
End If
Application.CutCopyMode = False
wb2.Close SaveChanges:=False
End Sub
因此,我通过更改pastestart定义在目标页面上添加了一个列选择
Set PasteStart = PasteStart.Cells(1, v + 1)
这调用了除第一列以外的所有列,并将它们放置在OER表上,每个列之间都有空列
第1列未复制
第2列放在第1列中
第11列置于第2列
第4列置于第4列中
第6列置于第7列,依此类推
我需要弄清楚如何把它们都放在通话顺序的第1列到第8列
有什么想法吗
>也许是这个?您是按行而不是按列进行偏移的
Sub importoer()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim Sheet As Worksheet
Dim PasteStart As Range
Dim v As Long, vcols As Variant
Set wb1 = ActiveWorkbook
Set PasteStart = wb1.Sheets("oer").Range("A1")
vcols = Array(1, 2, 11, 4, 6, 7, 10, 3) 'columns to copy in this order
wb1.Sheets("oer").UsedRange.Cells.ClearContents
FileToOpen = Application.GetOpenFilename(Title:="Please choose OER File", _
FileFilter:="All Files (*.*),*.*")
If FileToOpen = False Then
MsgBox "No File Specified.", vbExclamation, "ERROR"
Exit Sub
Else
Set wb2 = Workbooks.Open(Filename:=FileToOpen)
For Each Sheet In wb2.Sheets
With Sheet
For v = LBound(vcols) To UBound(vcols)
.Columns(vcols(v)).Copy
PasteStart.PasteSpecial xlPasteValues
Set PasteStart = PasteStart.Offset(, 1)
Next v
End With
Next Sheet
End If
Application.CutCopyMode = False
wb2.Close SaveChanges:=False
End Sub
这解决了没有调用第一列的问题,但仍然保留了其余列之间的间距。别介意我最后的评论,它起作用了,我没有删除v+1谢谢