gpt4 book ai didi

VBA 导入数据

转载 作者:行者123 更新时间:2023-12-04 20:42:05 25 4
gpt4 key购买 nike

我有一个问题,我认为这很复杂。这是关于从另一个 Excel 文件导入数据/信息,所需的数据/信息在 2 张纸上。

代码正在工作,但不是这样它应该是它似乎没有导入数据,下面它将解释我们不能在其中做什么,(“我和我的 friend 正在这个项目中工作,这是我们的要求公司对这个类别的 VBA 几乎一无所知,我们只是在研究这方面的信息,但总是卡住”)。

我们需要从文件中提取(链接在描述中),并且该文件每周创建一次(semana),所以它需要每周提取最新的。

下面是负责提取数据的 Excel 文件,出于安全原因,我们删除了其中的大部分信息并更改了名称。

Workbook with the Macro - Used for importing该表是数字 2,也称为 Dev.Pag,宏与同一文件中的“导入数据”按钮相关联。

Source Workbook - Contains the data这是它再次从名称中获取值(导出)的地方,并且一些数据被删除,因为它可能会危及公司。

如果有什么我可以编辑或更改的,请告诉我。提前感谢您的任何回复。

还将在下面发布代码:

Option Explicit
Sub ImportData()

Application.ScreenUpdating = False
Dim Path As String, Lstrw As Long
Dim SourceWb As Workbook
Dim TargetWb As Workbook

'Change this to your company workbook path
Path = "C:\Users\DZPH8SH\Desktop\Status 496 800 semana 12 2015.xls"
Workbooks.Open (Path)

'Change "Source" to the name of your company workbook
Set SourceWb = Workbooks("Status 496 800 semana 12 2015.xls")

'Part that needs some adjustments in down below
'This part is working good but probably some error in the data
'transferance may be intrefering with the integridty

'change the file address
Set TargetWb = Workbooks("Master_Atual_2015.xlsm")
Lstrw = SourceWb.Sheets(1).Cells.Find(What:="*", SearchOrder:=xlRows, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Row
With SourceWb.Sheets(1)
.Application.Union(.Range("D2:D" & Lstrw), .Range("F2:F" & _
Lstrw), .Range("I2:I" & Lstrw), .Range("M2:M" & Lstrw)).Copy _
Destination:=TargetWb.Sheets(1).Range("A3")
End With

SourceWb.Close savechanges:=False
Application.ScreenUpdating = True

End Sub

最佳答案

由于以下几个原因,很难理解您的代码:

  • 您只需按索引引用工作表。因此它们很难找到。最好按名称引用它们
  • 您仅通过地址引用范围,最好定义命名范围

  • 另一点使其更具可读性/可调试性,将联合设置为自己的范围对象,以便能够查看内容并确保这是您想要的。
    With SourceWb.Sheets(1)
    Set objTargetRange = .Application.Union(.Range("D2:D" & Lstrw), .Range("F2:F" & Lstrw), .Range("I2:I" & Lstrw), .Range("M2:M" & Lstrw))
    objTargetRange.Copy Destination:=TargetWb.Sheets(1).Range("A3")
    End With

    当打印出 objTargetRange 的地址时,它看起来像这样(您可以通过简单地按 ctrl+g 并写入 ?objTargetRange.Address 来做到这一点)

    $D$2:$D$9;$F$2:$F$9;$I$2:$I$9;$M$2:$M$9

    所以你选择了四列,每列有 8 个单元格。将它添加到 A3 时,它将并排添加,它没有任何偏移量。

    因此单元格 A3-D10 将被您的数据覆盖,代码有效。这样做是不可见的,因为比较之前和之后的状态非常复杂。您可以使更改可见,只需
  • 暂时从工作表中删除您的实际数据
  • 临时添加一些空行
  • 关于VBA 导入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30903135/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com