简体   繁体   English

使用Excel VBA移动不同工作簿的列

[英]Using Excel VBA to move columns for different workbooks

The script that I have moves columns from one sheet to another, but I have to put the name of the work book into the VBA script that I want it to work for. 我拥有的脚本将列从一张纸移到另一张纸,但是我必须将工作簿的名称放入要使用的VBA脚本中。 I may not be explaining it well, but I will attache the script. 我可能无法很好地解释它,但是我将附加该脚本。 How do I use this code for different work books and not just one with the name that is here >Set objWorkbook = objExcel.Workbooks.Open("Referrals") I have to put the name of the which ever excel file I am using into the parenthesis for the macro to work 如何将此代码用于不同的工作簿,而不仅仅是在这里使用以下代码> Set objWorkbook = objExcel.Workbooks.Open(“ Referrals”)我必须将要使用的excel文件的名称放入其中宏起作用的括号

Sub Column_Test()
'
' Column_Test Macro
'
' Keyboard Shortcut: Ctrl+c
Set objExcel = CreateObject("Excel.Application") 'Moves cell A1 to A1'    
objExcel.Visible = True    
Set objWorkbook = objExcel.Workbooks.Open("Referrals") 
' "Refferals" is the name of the excel workbook '

Set objWorksheet = objWorkbook.Worksheets(1)    
objWorksheet.Activate   

Set objRange = objWorksheet.Range("A1").EntireColumn

objRange.Copy      
Set objWorksheet = objWorkbook.Worksheets(2)    
objWorksheet.Activate        
Set objRange = objWorksheet.Range("A1")    
objWorksheet.Paste (objRange)    ''



Set objWorksheet = objWorkbook.Worksheets(1) 'Moves cell E1 to B1'

objWorksheet.Activate


Set objRange = objWorksheet.Range("E1").EntireColumn

objRange.Copy


Set objWorksheet = objWorkbook.Worksheets(2)

objWorksheet.Activate


Set objRange = objWorksheet.Range("B1")

objWorksheet.Paste (objRange)

''


'Moves Cell F1 to C1'

Set objWorksheet = objWorkbook.Worksheets(1)

objWorksheet.Activate

Set objRange = objWorksheet.Range("F1").EntireColumn

objRange.Copy


Set objWorksheet = objWorkbook.Worksheets(2)

objWorksheet.Activate


Set objRange = objWorksheet.Range("C1")
objWorksheet.Paste (objRange)

Set objWorksheet = objWorkbook.Worksheets(1)

objWorksheet.Activate
''



Set objRange = objWorksheet.Range("G1").EntireColumn

objRange.Copy


Set objWorksheet = objWorkbook.Worksheets(2)

objWorksheet.Activate


Set objRange = objWorksheet.Range("D1")

objWorksheet.Paste (objRange)

Set objWorksheet = objWorkbook.Worksheets(1)

objWorksheet.Activate
''



Set objRange = objWorksheet.Range("H1").EntireColumn

objRange.Copy


Set objWorksheet = objWorkbook.Worksheets(2)

objWorksheet.Activate


Set objRange = objWorksheet.Range("E1")

objWorksheet.Paste (objRange)


Set objWorksheet = objWorkbook.Worksheets(1)

objWorksheet.Activate
''



Set objRange = objWorksheet.Range("K1").EntireColumn

objRange.Copy


Set objWorksheet = objWorkbook.Worksheets(2)

objWorksheet.Activate


Set objRange = objWorksheet.Range("F1")

objWorksheet.Paste (objRange)

Set objWorksheet = objWorkbook.Worksheets(1)

objWorksheet.Activate
''



Set objRange = objWorksheet.Range("M1").EntireColumn

objRange.Copy


Set objWorksheet = objWorkbook.Worksheets(2)

objWorksheet.Activate


Set objRange = objWorksheet.Range("G1")

objWorksheet.Paste (objRange)



'
End Sub

< <

I don't know how many workbooks you want to use this because you do not provide full information, so let's guess you want to custom the use every time you use it. 我不知道要使用多少个工作簿,因为您没有提供完整的信息,所以让我们猜测您想在每次使用时自定义用途。

Just replace the line 只需更换线

Set objWorkbook = objExcel.Workbooks.Open("Referrals")

With this code: 使用此代码:

' Open the file dialog
With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = False
    .Filters.Add "Excel Files", "*.xlsx", 1

    If .Show = 0 Then Exit Sub
    ' Display paths of each file selected
    Set objWorkbook = Application.Workbooks.Open(.SelectedItems(1))
End With

The code will ask you for a workbook every time you execute this code. 每次执行此代码时,该代码都会要求您提供工作簿。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM