Tạo đường dẫn tự động trong Macro Excel (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

NGOCTOAN

Thành viên hoạt động
Tham gia
1/8/06
Bài viết
104
Được thích
33
Chào các Anh chị GPE,

Em có 1 file excel , trong đó sheet" data2" - cơ sở dữ liêu nhà thầu,
sheet" locdata2" là rút trích = SQL để lấy data2 sang voi cac điều kiện,

PHP:
Sub Macro1()
'
' Macro1 Macro
' Macro recorded 10/11/2011 by viet-nh
'
' Keyboard Shortcut: Ctrl+t
'
    ActiveWorkbook.SaveAs Filename:="D:\tuyet\loc_du_lieu_nha_thau.xls", _
        FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    With ActiveSheet.QueryTables.Add(Connection:= _
        "ODBC;DSN=Excel Files;DBQ=D:\tuyet\loc_du_lieu_nha_thau.xls;DefaultDir=D:\tuyet;DriverId=790;MaxBufferSize=2048;PageTimeout=5;" _
        , Destination:=Range("A2"))
        .CommandText = Array( _
"SELECT data2.nhathau, data2.ma1, data2.Date, data2.`D#No`, data2.`Ref#`, data2.Description, data2.Currency, data2.tygia, data2.tienUSD_invoice, data2.tienVND_invoice, data2.ma_Proj, data2.ngay_TT, dat" _
        , _
"a2.Tien_USD, data2.cong_no_conlai, data2.Tien_VND" & Chr(13) & "" & Chr(10) & "FROM `D:\tuyet\loc_du_lieu_nha_thau`.data2 data2" & Chr(13) & "" & Chr(10) & "WHERE (data2.ma_Proj Like 'PD%') AND (data2.ngay_TT>={ts '2011-01-01 00:00:00'}) OR (data2.ma_Proj " _
        , "Like 'IC%') AND (data2.ngay_TT>={ts '2011-01-01 00:00:00'})")
        .Name = "Query from Excel Files"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

Em đã làm xong nhưng khi chép sang may khác, khác dường dẫn thì không chạy, ;phai vào code sửa lại mất thời gian,

em biết 1 phương thức : ThisWorkbook.Path để gán vào cho nó nhận tự động đường dẫn, nhưng làm mãi cứ báo lỗi,

nhờ các anh chi thay thế hộ trong đoạn code dưới đây :


Đoạn màu đỏ ấy - em muốn thay = phương thức "ThisWorkbook.Path" - mong các anh chị giú đỡ, em gửi file kèm theo

Xin cảm ơn,/.


Ngoctoan
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
phương thức : ThisWorkbook.Path => trả về địa chỉ của file chứa code này
Vậy ví dụ như file của bạn nằm địa chỉ D:\

Để lấy địa chỉ : D:\tuyet\loc_du_lieu_nha_thau.xls thì code sẽ là :
ThisWorkbook.Path & "\tuyet\loc_du_lieu_nha_thau.xls"

Tương tự lý thuyết trên bạn có thể tuỳ biến cho file của bạn
 
Cảm ơn Ban dhn46, nhưng ko được bạn ơi, nếu được bạn thử hoàn thiện với file kèm hộ được không ?
 

Cảm ơn Thầy Ndu, nhưng em đã loay hoay thay thế đoạn code trên nhưng vẫn báo lỗi, thầy có thể giúp hoàn thiện code file được không để em có thể chép sang máy khác- thay đổi đường dẫn vẫn không bị báo lỗi sai đường dẫn ( nghĩa là nó cập nhật tự động)

Ngoctoan
 
Cảm ơn Thầy Ndu, nhưng em đã loay hoay thay thế đoạn code trên nhưng vẫn báo lỗi, thầy có thể giúp hoàn thiện code file được không để em có thể chép sang máy khác- thay đổi đường dẫn vẫn không bị báo lỗi sai đường dẫn ( nghĩa là nó cập nhật tự động)

Ngoctoan
Bạn sửa đoạn này:
Mã:
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=Excel Files;DBQ=[COLOR=#ff0000]D:\tuyet\loc_du_lieu_nha_thau.xls[/COLOR];DefaultDir=[COLOR=#ff0000]D:\tuyet;[/COLOR]DriverId=790;MaxBufferSize=2048;PageTimeout=5;" _
, Destination:=Range("A2"))
thành đoạn này xem sao:
Mã:
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=Excel Files;DBQ=" &[COLOR=#ff0000] ActiveWorkbook.FullName[/COLOR] & ";DefaultDir=" & [COLOR=#ff0000]ActiveWorkbook.Path[/COLOR] & ";DriverId=790;MaxBufferSize=2048;PageTimeout=5;" _
, Destination:=Range("A2"))
 
Bạn sửa đoạn này:
Mã:
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=Excel Files;DBQ=[COLOR=#ff0000]D:\tuyet\loc_du_lieu_nha_thau.xls[/COLOR];DefaultDir=[COLOR=#ff0000]D:\tuyet;[/COLOR]DriverId=790;MaxBufferSize=2048;PageTimeout=5;" _
, Destination:=Range("A2"))
thành đoạn này xem sao:
Mã:
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=Excel Files;DBQ=" &[COLOR=#ff0000] ActiveWorkbook.FullName[/COLOR] & ";DefaultDir=" & [COLOR=#ff0000]ActiveWorkbook.Path[/COLOR] & ";DriverId=790;MaxBufferSize=2048;PageTimeout=5;" _
, Destination:=Range("A2"))

Cảm ơn Anh Nghĩa Phúc, em đã làm nhưng vẫn báo lỗi SQL syntax, không biết lối cú phap ở đâu? Code em lam ở dưới, phần đỏ là theo hướng dẫn của anh :

PHP:
Sub Macro1()
'
' Macro1 Macro
' Macro recorded 10/11/2011 by viet-nh
'
' Keyboard Shortcut: Ctrl+t
   With ActiveSheet.QueryTables.Add(Connection:= _
        "ODBC;DSN=Excel Files;DBQ=" & ActiveWorkbook.FullName & ";DefaultDir=" & ActiveWorkbook.Path & ";DriverId=790;MaxBufferSize=2048;PageTimeout=5;" _
        , Destination:=Range("A2"))
        .CommandText = Array( _
"SELECT data2.nhathau, data2.ma1, data2.Date, data2.`D#No`, data2.`Ref#`, data2.Description, data2.Currency, data2.tygia, data2.tienUSD_invoice, data2.tienVND_invoice, data2.ma_Proj, data2.ngay_TT, dat" _
        , _
        "a2.Tien_USD, data2.cong_no_conlai, data2.Tien_VND" & Chr(13) & "" & Chr(10) & "FROM " & ActiveWorkbook.FullName & ".data2 data2" & Chr(13) & "" & Chr(10) & "WHERE (data2.ma_Proj Like 'PD%') AND (data2.ngay_TT>={ts '2011-01-01 00:00:00'}) OR (data2.ma_Proj " _
        , "Like 'IC%') AND (data2.ngay_TT>={ts '2011-01-01 00:00:00'})")
        .Name = "Query from Excel Files"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

Nhờ các anh chị giúp đỡ thêm,

Xin cảm ơn

Ngoctoan
 
Chỉnh sửa lần cuối bởi điều hành viên:
Cảm ơn các Anh Chi - em đã làm được rồi

Các Anh Chị cho hỏi - khi chuyển sang excel 2007 thì SQL khong lọc được dữ liệu, còn 2003 vẫnlọc tốt ??

Em gửi file tham khảo kèm

Ngoctoan
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Nếu bạn xem kỹ các bài viết trong đường link tôi cho ở trên thì đã biết được vấn đề giải quyết thế nào rồi:
http://www.giaiphapexcel.com/forum/showthread.php?42952-Lấy-dữ-liệu-từ-file-không-mở&p=282037#post282037

Không Thầy Ndu ơi, em làm ở excel 2003 ok rồi, nhưng khi copy sang máy và mở bằng office 2007 thì sửa kiểu gì cũng bị báo lỗi- file tren là em đã hoàn thiện được trong excel 203 , Thầy Ndu có cách gì không nhỉ để mở bằng office 2007 vẫn chạy phà phà,

Xin cảm ơn./.

Ngoctoan
 
Không Thầy Ndu ơi, em làm ở excel 2003 ok rồi, nhưng khi copy sang máy và mở bằng office 2007 thì sửa kiểu gì cũng bị báo lỗi- file tren là em đã hoàn thiện được trong excel 203 , Thầy Ndu có cách gì không nhỉ để mở bằng office 2007 vẫn chạy phà phà,

Xin cảm ơn./.

Ngoctoan
Thì đường link tôi cho ở trên đấy (bài 13) ---> Code chỉnh lại để có thể dùng trên Excel 2003 và Excel 2007 ---> Bạn chưa đọc kỹ à?
 
Web KT

Bài viết mới nhất

Back
Top Bottom