【问题标题】:Import Data From one workbook to another将数据从一个工作簿导入到另一个工作簿
【发布时间】:2017-09-28 17:59:02
【问题描述】:

我目前有一个用于创建外部 pdf 表单的主工作簿。我当前的代码允许我浏览到一个文件夹并选择另一个工作簿以从中提取特定数据并将其粘贴到主文件中。

数据从外部工作簿 sheet1 复制并粘贴到活动工作簿 sheet1。我正在使用的代码是“For Each Sheet”。像魅力一样工作。

问题是我在工作簿中添加了另一张工作表,它引发了运行时错误 1004。我需要对其重新编码,以便它仅从外部工作簿中的 sheet1 复制并仅粘贴到 Master 的 sheet1(活动)。

有什么想法吗?感谢您提供的任何帮助。

Sub ImportData()

Dim wb1 As Workbook
Dim wb2 As Workbook
Dim Sheet As Worksheet
Dim PasteStart As Range

Dim sh As Worksheet
Dim strXLSFile As String, strPDFFile As String, strFolder As String

strFolder = "H:\Company Data\Firm Files\Client Data Workbooks\Excel Data-Client Info"

Set wb1 = ActiveWorkbook
Set PasteStart = [Client_Data]

FileToOpen = Application.GetOpenFilename _
(Title:="Please choose a Report to Parse", _
FileFilter:="Report Files *.xlsm (*.xlsm),")

If FileToOpen = False Then
    MsgBox "No File Specified.", vbExclamation, "ERROR"
    Exit Sub
Else
    Set wb2 = Workbooks.Open(Filename:=FileToOpen)
For Each Sheet In wb2.Sheets
    With Sheet.Cells.Range("B9:B27")
        .Copy PasteStart
        Set PasteStart = PasteStart.Offset(.Rows.Count)
    End With
    Next Sheet

End If

wb2.Close False

End Sub

【问题讨论】:

  • 在哪一行给出了错误?
  • Hey Chris.... .Copy PasteStart 处出现错误 在我添加第二个工作表之前,导入工作正常。

标签: excel vba


【解决方案1】:

如果您只想要 Sheet1,请摆脱循环。

代替:

For Each Sheet In wb2.Sheets
With Sheet.Cells.Range("B9:B27")
    .Copy PasteStart
    Set PasteStart = PasteStart.Offset(.Rows.Count)
End With
Next Sheet

试试:

wb2.sheets(1).range("B9:B27").copy PasteStart

这似乎是一次性使用,因此无需再次Set PasteStart =。希望这会有所帮助

【讨论】:

  • 感谢 Joshua,成功了!是的,每次使用 master 导入都是一次性使用。周末愉快!
猜你喜欢
  • 1970-01-01
  • 2013-10-23
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多