Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA代码,用于从一张图纸向另一张图纸导入多列_Vba_Excel - Fatal编程技术网

VBA代码,用于从一张图纸向另一张图纸导入多列

VBA代码,用于从一张图纸向另一张图纸导入多列,vba,excel,Vba,Excel,我正在尝试将几个列从一个excel电子表格导入到另一个excel电子表格。下面是我在这个论坛上找到的代码,它运行良好。我面临的唯一问题是它只导入一列 有人可以指导我如何编辑代码,以便我可以导入多个列吗 Importing single Column Sub CopyColumnToWorkbook() Dim sourceColumn As Range, targetColumn As Range Set sourceColumn = Workbooks("Source.xlsm").Work

我正在尝试将几个列从一个excel电子表格导入到另一个excel电子表格。下面是我在这个论坛上找到的代码,它运行良好。我面临的唯一问题是它只导入一列

有人可以指导我如何编辑代码,以便我可以导入多个列吗

Importing single Column
Sub CopyColumnToWorkbook()
Dim sourceColumn As Range, targetColumn As Range

Set sourceColumn = Workbooks("Source.xlsm").Worksheets("2017"). Columns(“A”)
Set targetColumn = Workbooks("Target.xlsm").Worksheets("Field WH Projections").Columns(“A”)

sourceColumn.Copy Destination:=targetColumn
End 

根据OP对未连接列的要求进行更新

Sub ColumnCopy()
Dim Source_Sheet As Worksheet, Target_Sheet As Worksheet
Dim CLM As Integer, LastColumn As Integer

Set Source_Sheet = Workbooks("Source.xlsm").Worksheets("2017")
Set Target_Sheet = Workbooks("Target.xlsm").Worksheets("Field WH Projections")

LastColumn = Source_Sheet.Cells.Find("*", searchorder:=xlByColumns, searchdirection:=xlPrevious).Column

For CLM = 1 To LastColumn

'Columns 1 or (A)...  2 (B).... F and H.
If CLM = 1 Or CLM = 2 Or CLM = 6 Or CLM = 8 Then

Source_Sheet.Columns(CLM).Copy Destination:=Target_Sheet.Columns(CLM)

End If

Next CLM

End Sub

根据OP对未连接列的要求进行更新

Sub ColumnCopy()
Dim Source_Sheet As Worksheet, Target_Sheet As Worksheet
Dim CLM As Integer, LastColumn As Integer

Set Source_Sheet = Workbooks("Source.xlsm").Worksheets("2017")
Set Target_Sheet = Workbooks("Target.xlsm").Worksheets("Field WH Projections")

LastColumn = Source_Sheet.Cells.Find("*", searchorder:=xlByColumns, searchdirection:=xlPrevious).Column

For CLM = 1 To LastColumn

'Columns 1 or (A)...  2 (B).... F and H.
If CLM = 1 Or CLM = 2 Or CLM = 6 Or CLM = 8 Then

Source_Sheet.Columns(CLM).Copy Destination:=Target_Sheet.Columns(CLM)

End If

Next CLM

End Sub

有趣的是,我不知道你可以使用字符串字母作为列“数字”(即
Columns(“A”)=Columns(1)
。我甚至从一篇完整的新手文章中学到了一些东西!出于这个原因,我将对此进行一次改进。所以从技术上讲,你所需要的只是将代码更改为“A:C”或者不管你需要多少。有趣的是,我不知道你可以用字符串字母作为列“数字”(即
列(“A”)=列(1)
。我甚至从一篇完整的新手文章中学到了一些东西!出于这个原因,我会给它一个提示。所以从技术上讲,你只需要将代码改为“A:C”或者你需要多少。是的,我可以使用列(“A:C”),但我的列不是顺序的(即“A,B,F,H”)我看起来很重要。显然,如果你改变了列,你就必须改变数字。通常我可能会在我的工作中做一些类似这样的查找函数,但希望这能让你了解范围和if语句。这会给我脚本超出范围的错误,因为某些原因,我甚至尝试将文件重命名为检查这是否是导致错误的原因。它是否在您这边运行?是的,我可以使用列(“A:C”),但我的列不是顺序的(即“A、B、F、H”)我看起来很重要。显然,如果你改变了列,你就必须改变数字。通常我可能会在我的工作中做一些类似这样的查找函数,但希望这能让你了解范围和if语句。这会给我脚本超出范围的错误,因为某些原因,我甚至尝试将文件重命名为检查这是否是导致错误的原因。它是否在您这边运行?