在一个标签中,我有信息,我在第二个标签上输出了信息(它的深度比这个更深,但我尝试尽可能简单) 将此称为(1)
我想创建另一个文件,每次保存(1)时,(1)的Tab 2中的信息堆叠在下面的(2)中:
我猜这是基于宏的,但我不知道该怎么做。
为了澄清,第一次有人将数据保存到(1)中的标签1时,它的输出被发送到(1)中的标签2。然后我希望将数据保存到新文件(2),作为XY Z.下次有人将数据保存在(1)中时,我希望它在新文件(2)中以AB C的形式弹出。因此,每次保存文件时,新文件都会形成新数据,(2)。
提供OP的代码(摘自评论):
Private Sub CommandButton21_Click()
Dim Name As String
Dim Date As String
Dim State As String
Worksheets("Sheet1").Select FileName = Range("B1")
EffectiveDate = Range("B2")
State = Range("B3")
Set myData = Workbooks.Open("H: \NameDateState.xlsx")
Worksheets("Sheet1").Select
Worksheets("sheet1").Range("A1").Select
RowCount = Worksheets("sheet1").Range("A1").CurrentRegion.Rows.Count
With Worksheets("Sheet1")
.Range("A1") .Offset(RowCount, 0) = Name
.Offset(RowCount, 1) = Date
.Offset(RowCount, 2) = State
End With
myData.Save
End Sub
答案 0 :(得分:0)
让我们看看我们能做什么......您希望数据从表格(1)移动到标签表格(2),然后您希望表格(2)移动到新文件并保存该文件(可能已关闭)。 / p>
如果是这种情况,你需要做一些事情,其中一些可能有助于你的编码从长远来看:
1)避免。选择/。尽可能激活
2)在开始列出子程序之前,在模块顶部使用Option Explicit(将强制您声明所有变量)
让我们进一步细分您的问题...您在Sheets(1)上有一个指定位置输入数据,输入(从点击按钮)到表格(2) 。我们假设您的标题位于第1列(“A”),输入位于第2列(“B”):
dim lrd as long
With Sheets(2)
lrd = .cells(.rows.count,1).end(xlup).row
.Cells(lrd+1,1).Value = Sheets(1).cells(1,2).Value 'Date
.Cells(lrd+1,2).Value = Sheets(1).cells(2,2).Value 'State
.Cells(lrd+1,3).Value = Sheets(1).cells(3,2).Value '# People
'You will probably want to clear data from the input cells after that
Sheets(1).Range(Sheets(1).Cells(1,2),Sheets(1).Cells(3,2)).ClearContents
End With
好的,数据现在存在于Sheets(2)中。您现在需要Sheets(2)到.Copy(将工作表带到新工作簿):
Sheets(2).Copy
然后保存为新工作簿,然后保存/关闭:
ActiveWorkbook.SaveAs "C:\NameOfFile.xlsx", FileFormat:=51
ActiveWorkbook.Close SaveChanges:=True
这应该会让您打开输入工作簿。我建议基于一些更动态的文件命名,虽然我提供了一个固定的情况。请注意,您的源文件将是xlsm,保存为xlsx将从新工作簿中删除宏,以防任何内容被转移。
总而言之,它看起来像:
dim lrd as long
With Sheets(2)
lrd = .cells(.rows.count,1).end(xlup).row
.Cells(lrd+1,1).Value = Sheets(1).cells(1,2).Value 'Date
.Cells(lrd+1,2).Value = Sheets(1).cells(2,2).Value 'State
.Cells(lrd+1,3).Value = Sheets(1).cells(3,2).Value '# People
'You will probably want to clear data from the input cells after that
Sheets(1).Range(Sheets(1).Cells(1,2),Sheets(1).Cells(3,2)).ClearContents
End With
Sheets(2).Copy
ActiveWorkbook.SaveAs "C:\NameOfFile.xlsx", FileFormat:=51
ActiveWorkbook.Close SaveChanges:=True