返回列表 上一主題 發帖

急!急!想請問寫出選擇性匯入資料的方法(已有一段程式碼,但不知道如何改寫))

如何解?????執行階段錯誤"1004"



各位大大好

之前在此論壇上使用一個vba程式,可選取路經資料夾的檔案並使其自東複製後貼上指定的SHEET
但卻出現             執行階段錯誤"1004"   
                              找不到". 請檢查檔名是否有拼錯,或檔案位置是否正確.

程式如下
Sheets("工作表1").Activate

fds = Application.GetOpenFilename("Excel Files (*.xlsm;*.xlsx), *.xlsm;*.xlsx", , , , True)
If IsArray(fds) Then
For i = 1 To UBound(fds)
   [A2].Offset(i - 1) = fds(i)
Next
End If

Sheets("工作表1").Activate

For Each a In Range([A2], Cells(Rows.Count, 1).End(xlUp))
    With Workbooks.Open(a)...................................................這句出現ERROR
    .Sheets.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    .Close 0
  End With
  Next

Sheets("工作表1 (2)").Activate

Range("A2").Select
Columns("A:A").EntireColumn.AutoFit
Sheets("工作表1").Activate
   
End Sub

想麻煩各位大大看下,幫個忙嗎?
Ian

TOP

急!急!想請問寫出選擇性匯入資料的方法(已有一段程式碼,但不知道如何改寫))

請問各位大大
以下兩段程式碼是
1.開啟資料夾讀取所要的檔案路徑連結
2.把開啟的連結檔案打開 並將檔案內的sheet資料匯入
問題是當想要匯入的資料有很多sheet,想指定匯入某個sheet的某一欄位或某一列資料時,要怎麼改寫

謝謝各位指教阿
  1. Sub DATA_INPUT()

  2. fds = Application.GetOpenFilename("Excel Files (*.xlsm;*.xlsx), *.xlsm;*.xlsx", , , , True)
  3.                                 
  4. If IsArray(fds) Then
  5. For i = 1 To UBound(fds)
  6.    [A2].Offset(i - 1) = fds(i)
  7. Next
  8. End If

  9. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  10. On Error Resume Next  '''''' 錯誤跳過
  11. For Each a In Range([A2], Cells(Rows.Count, 1).End(xlUp))
  12.   With Workbooks.Open(a)
  13.       .Sheets.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
  14.      .Close 0
  15.   End With
  16. Next
  17. On Error GoTo 0 '''''''''''''錯誤跳過'''''''''''
  18. End Sub
複製代碼
Ian

回復 4# GBKEE
請問一下
我想改寫的是

    .Sheets.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
上式**為所開啟活頁簿上所有工作表複製到ThisWorkbook(執行巨集的活頁簿)下

(把所有開啟的活頁簿上的某一工作表 中的(列如:Sheet("C").Range("A39:D99")自動複製到我指定的sheet(ie:"工作表2")的A1開始)
因為開啟的工作表可能有很多個(ie:sheet("C")/Sheet("C1") /Sheet("C2")....但每個sheet裡 我只要Range("A39:D99"),
可以改寫成   .Sheets.Range("A39:D99").Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)

TKS
Ian

TOP

回復 2# GBKEE

感激不盡
Ian

TOP

回復 7# GBKEE


    請問大大
我有附上兩張圖片
1.是 錯誤訊息
2.是我的操作概念
不知道你這樣有沒有比較明白我的意思


感謝指教

Error1.png (151.29 KB)

Error1.png

Ian

TOP

回復 9# GBKEE

謝謝!大大的幫助!
    感激不盡!
Ian

TOP

        靜思自在 : 地上種了菜,就不易長草;心中有善,就不易生惡。
返回列表 上一主題