用于复杂复制功能的Excel VBA宏

时间:2013-07-19 20:03:46

标签: excel vba excel-vba

我是VBA的新手,虽然我已经用其他语言编写了一些代码,所以我理解了一些一般概念。我需要为excel编写一个宏,它将工作簿中的一些数据复制到一个列中,该列与连续的新工作簿中的单个列不相邻。困难的部分是我需要通过用户提示选择要复制的数据,并且每个选择的大小会有所不同。最后,具有单个列的新工作簿将保存为制表符分隔的文本文件。这就是我想到的,用一般的编码语言。

我将使用斜体来区分变量,使用“引号”来区分值,使用粗体来区分编码关键字。我假设代码将从新的空工作簿运行。

代码:

    %%%初始化变量。
     MoreCells =“1”%%% boolean yes / no提示稍后
     SelectedCells =“稍后在提示时选择的范围”
     SelectedCellsMagnitude =“选定单元格中的单元格数”
     DestinationStartCell =“A1”%%%单元格从复制范围开始到

    打开工作簿“要从.xlsx复制的工作簿”

    虽然 morecells =“1”
    提示用户选择范围
    设置“选择范围”= selectedcells
    设置“ selectedcells的数量”= selectedcellsmagnitude
    将 selectedcells 复制到从 destinationstartcell 开始的新工作簿中     设置 destinationstartcell = destinationstartcell + selectedcellsmagnitude
    提示用户“是否有更多要复制的单元格?”
    如果“是”设置 morecells =“1”
    其他设置 morecells =“0”

    将新工作簿另存为目标“\ new \ workbook \ destination”中名为“newworkbookname.txt”的制表符分隔值文本文件

:结束代码

任何帮助都将非常感激。或者,就此而言,在使用excel的VBA中是否可以实现这一点。

提前致谢!

1 个答案:

答案 0 :(得分:0)

将工作簿和工作表值更改为适用的工作簿和工作表

Sub usermove()
Dim c, Rng1 As Range
Dim i As Integer

i = 1

'ask for input
userselect:
ThisWorkbook.Sheets("Sheet1").Activate
Set Rng1 = Application.InputBox("Please Select Cells", Type:=8)

'loop
For Each c In Rng1.Cells

  ThisWorkbook.Sheets("Sheet2").Activate

  Cells(i, 1).Value = c.Value

    i = i + 1
    Next

'Prompt for more input
continue = MsgBox("Are there more cells to select?", vbYesNo)
If continue = vbYes Then GoTo userselect

'then save

    ChDir "path"
    ActiveWorkbook.SaveAs Filename:="path\Book1.txt", FileFormat _
        :=xlText, CreateBackup:=False


End Sub