如何将可重复使用的多行/多列表从一个 Excel 工作表复制到另一个工作表上的数据库

Posted

技术标签:

【中文标题】如何将可重复使用的多行/多列表从一个 Excel 工作表复制到另一个工作表上的数据库【英文标题】:How to copy a reusable multi row/column table from one excel worksheet to a database on another worksheet 【发布时间】:2018-07-24 10:57:22 【问题描述】:

我对 VBA 编码相当陌生,我想知道是否可以执行以下操作?

我有一个可重复使用的输入工作表,其中包含一个包含 24 列和 10 行的表格等元素。我希望能够将许多行添加到另一个工作表上的数据库中。 我设法找到了一些允许单行更新但多行没有成功的代码。

任何建议将不胜感激。

谢谢

伊恩

代码如下所示:

子 UpdateLogWorksheet()

Dim historyWks As Worksheet
Dim inputWks As Worksheet

Dim nextRow As Long
Dim oCol As Long

Dim myCopy As Range
Dim myTest As Range

Dim lRsp As Long

Set inputWks = Worksheets("Input")
Set historyWks = Worksheets("PartsData")
oCol = 3 'order info is pasted on data sheet, starting in this column

'check for duplicate order ID in database
If inputWks.Range("CheckID") = True Then
  lRsp = MsgBox("Order ID already in database. Update record?", vbQuestion + vbYesNo, "Duplicate ID")
  If lRsp = vbYes Then
    UpdateLogRecord
  Else
    MsgBox "Please change Order ID to a unique number."
  End If

Else

  'cells to copy from Input sheet - some contain formulas
  Set myCopy = inputWks.Range("OrderEntry")

  With historyWks
      nextRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
  End With

  With inputWks
      'mandatory fields are tested in hidden column
      Set myTest = myCopy.Offset(0, 2)

      If Application.Count(myTest) > 0 Then
          MsgBox "Please fill in all the cells!"
          Exit Sub
      End If
  End With

  With historyWks
      'enter date and time stamp in record
      With .Cells(nextRow, "A")
          .Value = Now
          .NumberFormat = "mm/dd/yyyy hh:mm:ss"
      End With
      'enter user name in column B
      .Cells(nextRow, "B").Value = Application.UserName
      'copy the order data and paste onto data sheet
      myCopy.Copy
      .Cells(nextRow, oCol).PasteSpecial Paste:=xlPasteValues, Transpose:=True
      Application.CutCopyMode = False
  End With

  'clear input cells that contain constants
  ClearDataEntry

如果结束

结束子

并附上输入表enter image description here

【问题讨论】:

是的,这是可能的,请您分享您的代码,或者您的数据布局的屏幕截图,以便我们给出适当的答案?谢谢。 您应该能够复制工作簿 1 中的整个新范围并将其复制,然后将其粘贴到数据库工作簿中的单元格(lastrow+1,1)中。 谢谢 Cyril - 你有我可以看的示例代码吗?正如我所说,我对此很陌生,所以我不能 100% 确定在哪些情况下使用哪些表扬等 @Iain 只是未来的一个 FYI,你应该使用 @username 来引起对预期人的注意,尽管每个评论行只能有一个电话,否则这个人很可能不会知道你已经回复了他们。我碰巧检查了这个,因为这个名字看起来很熟悉,只是碰巧看到你对我的评论。 @Cyril,谢谢!才刚刚开始在这里发帖所以还在学习绳索......谢谢你的代码,我看看能不能完成这项工作 【参考方案1】:

回复评论的示例代码:

Dim lr as long, lc as long, lr2 as long
with ThisWorkbook.Sheets("Source")
    lr = .cells(.rows.count,1).end(xlup).row
    lc = .cells(1,.columns.count).end(xltoleft).column
    .range(.cells(2,1),.cells(lr,lc)).copy 
end with
with Workbooks("Database").Sheets("Dest")
    lr2 = .cells(.rows.count,1).end(xlup).row
    .cells(lr2+1,1).pastespecial xlvalues
end with

【讨论】:

稍作修改,效果很好,谢谢 @Iain 所以这不会保持打开状态,请您接受答案,并说明您所做的修改吗? mods 用于工作表名称和单元格行/列引用,以便将其复制到我的目标工作表上的特定区域。 @Iain 啊,标准的东西。不确定您是否意味着必须更改 with 语句或任何对象的工作方式。谢谢! 标准它可能对我来说很新!但我想我快到了……

以上是关于如何将可重复使用的多行/多列表从一个 Excel 工作表复制到另一个工作表上的数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何将可扩展列表视图的选定子视图数据从片段发送到父活动?

如何从用户那里获取多行输入[重复]

Android中的多行列表视图[重复]

Excel vba列表框多列多行从14个文本框

如何在excel VBA中同时多选多个列表框

如果多行中出现相同的值,则Excel创建下拉列表