我是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中是否可以实现这一点。
提前致谢!
答案 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