查看完整版本: Excel VBA form表單 資料匯入
頁: [1]

softwave00887 發表於 2015-12-16 10:55 PM

Excel VBA form表單 資料匯入

現在我有A.xlsm(啟用巨集的Excel)以開啟表單輸入資料,但我所需入的資料並不是匯入當下的Excel(A.xlsm)內,而是匯入B.xlsx(資料庫用)檔案內,請問該在如何加入檔案路徑及名稱的程式碼呢?
以下為我的程式碼
Private Sub CommandButton1_Click()

'2.如何知道最下面一列
    n = Range("A2").End(xlDown).Row + 1
'3.
    Cells(n, "A") = Cells(n - 1, "A") + 1
'4.
    Cells(n, "B") = tx01.Text
    Cells(n, "C") = tx02.Text
    Cells(n, "D") = tx03.Text
    Cells(n, "E") = tx04.Text
    Cells(n, "F") = tx05.Text
    Cells(n, "G") = tx06.Text
    Cells(n, "H") = CB01.Text
    Cells(n, "I") = tx07.Text
    Cells(n, "J") = tx08.Text
    Cells(n, "L") = tx09.Text
請幫忙解答!!...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

jasonlin7 發表於 2015-12-17 07:41 PM

本帖最後由 jasonlin7 於 2015-12-17 09:40 PM 編輯

請測試看看是否符合你的需求:

softwave00887 發表於 2015-12-17 11:29 PM

本帖最後由 darkjack 於 2015-12-18 09:09 PM 編輯

jasonlin7 發表於 2015-12-17 07:41 PM static/image/common/back.gif
請測試看看是否符合你的需求:
Dear jasonlin7:
感謝您提供程式碼,但我使用您的程式碼之後出現了"執行階段錯誤 424 此處需要物件"
點選偵錯紐 錯誤的程式碼為 "Set myBFile = Workbooks(庫存資料庫.xlsx)"(Set myBFile =nothing)
但我的檔名、儲存路徑都沒錯 可以再請求協助嗎? 謝謝
下面是您給我的程式碼(Range("AD4")是我寫在店面管理系統.xlsm底下的存取路徑)

Private Sub CommandButton1_Click()
Dim n As Long
    n = 0
        
    Dim myBFilePath As String
    Dim myBFileWShName As String
        
    Dim myAFile As Workbook
    Dim myBFile As Workbook
    Dim myAFileSh As Worksheet
    Dim myBFileSh As Worksheet
   
    '定義庫存資料庫.xlsx的路徑和工作表名稱(請自行重新定義)
    myBFilePath = Range("AD4") & "庫存資料庫.xlsx"
    myBFileWShName = "Record"
        
    '開啟庫存資料庫.xlsx,已開啟將自動略過
    On Error Resume Next
    Workbooks.Open Filename:=myBFilePath
    On Error GoTo 0
   
    '設定物件變數
    Set myAFile = ActiveWorkbook
    Set myBFile = Workbooks(庫存資料庫.xlsx)
    Set myAFileSh = ActiveSheet
    Set myBFileSh = Workbooks(庫存資料庫.xlsx).Worksheets(myBFileWShName)
   
    n = myBFileSh.Range("A2").End(xlDown).Row + 1
   
    myBFileSh.Cells(n, "A") = myBFileSh.Cells(n - 1, "A") + 1
   
    'Active A.xlsx,並從店面管理系統.xlsm的"自訂新增..."讀取資料到庫存資料庫.xlsm
    myAFile.Activate

    myBFileSh.Cells(n, "B") = UserForm1.tx01.Text
    myBFileSh.Cells(n, "C") = UserForm1.tx02.Text
    myBFileSh.Cells(n, "D") = UserForm1.tx03.Text
    myBFileSh.Cells(n, "E") = UserForm1.tx04.Text
    myBFileSh.Cells(n, "F") = UserForm1.tx05.Text
    myBFileSh.Cells(n, "G") = UserForm1.tx06.Text
    myBFileSh.Cells(n, "H") = UserForm1.CB01.Text
    myBFileSh.Cells(n, "I") = UserForm1.tx07.Text
    myBFileSh.Cells(n, "J") = UserForm1.tx08.Text
    myBFileSh.Cells(n, "L") = UserForm1.tx09.Text

    '關閉庫存資料庫.xlsx(視情況執行關閉B.xlsx)
    Workbooks("庫存資料庫.xlsx").Close
End Sub
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

jasonlin7 發表於 2015-12-18 12:04 PM

本帖最後由 jasonlin7 於 2015-12-18 04:19 PM 編輯

Workbooks(庫存資料庫.xlsx)不能寫成這樣,語法錯誤,要寫成Workbooks("庫存資料庫.xlsx")。
WorkSheets(myBFileWShName)是正確的,是因為myBFileWShName是字串變數。

請注意myBFilePath的路徑設定是否正確。
請注意myBFileWShName這個變數要設定成你的B.xlsx存取資料工作活頁簿的名稱,
希望有幫到你~  加油~


...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

softwave00887 發表於 2015-12-19 01:13 AM

jasonlin7 發表於 2015-12-18 12:04 PM static/image/common/back.gif
Workbooks(庫存資料庫.xlsx)不能寫成這樣,語法錯誤,要寫成Workbooks("庫存資料庫.xlsx")。
WorkSheets(my ...

dear jasonlin7:
感謝您的協助與指導,現在程式經果反覆測試已經完成(只有一些Bag仍在處理),例如當庫存資料庫只有標題列(A1)時
n並不會從A2開始寫入資料,而是從A1048576+1(最底無法再寫入),所以只能先將A2與A3先手動填入資料,再跑程式才行。
這是我的程式碼,請您參考一下
Private Sub CommandButton1_Click()
    '新增
    Dim n As Long
    Dim myBFilePath As String
    Dim myBFileWShName As String
        
    Dim myAFile As Workbook
    Dim myBFile As Workbook
    Dim myAFileSh As Worksheet
    Dim myBFileSh As Worksheet
   
    '定義庫存資料庫.xlsx的路徑和工作表名稱(請自行重新定義)
    myBFilePath = Range("AD4") & "庫存資料庫.xlsx"
    myBFileWShName = "庫存"
        
    '開啟庫存資料庫.xlsx,已開啟將自動略過
    On Error Resume Next
    Workbooks.Open Filename:=myBFilePath
    On Error GoTo 0
   
    '設定物件變數
    Set myAFile = ActiveWorkbook
    Set myBFile = Workbooks("庫存資料庫.xlsx")
    Set myAFileSh = ActiveSheet
    Set myBFileSh = Workbooks("庫存資料庫.xlsx").Worksheets(myBFileWShName)
   
    n = myBFileSh.Range("A2").End(xlDown).Row + 1
   
    myBFileSh.Cells(n, "A") = myBFileSh.Cells(n - 1, "A") + 1
   
    'Active A.xlsx,並從店面管理系統.xlsm的"自訂新增..."讀取資料到庫存資料庫.xlsm
    myAFile.Activate

    myBFileSh.Cells(n, "B") = tx01.Text
    myBFileSh.Cells(n, "C") = tx02.Text
    myBFileSh.Cells(n, "D") = tx03.Text
    myBFileSh.Cells(n, "E") = tx04.Text
    myBFileSh.Cells(n, "F") = tx05.Text
    myBFileSh.Cells(n, "G") = tx06.Text
    myBFileSh.Cells(n, "H") = CB01.Text
    myBFileSh.Cells(n, "I") = tx07.Text
    myBFileSh.Cells(n, "J") = tx08.Text
    myBFileSh.Cells(n, "K") = tx09.Text
   
    '關閉庫存資料庫.xlsx(視情況執行關閉B.xlsx)
    Workbooks("庫存資料庫.xlsx").Save
    Workbooks("庫存資料庫.xlsx").Close
    MsgBox ("新增完成")

End Sub
再次真心的感謝您!!...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>
頁: [1]