Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Cách thêm dòng cho 1 file Excel từ Access VBA
#1
040Mình cần 1 đoạn VBA để insert 1 dòng cho file Excel từ 1 chương trình Access.
Cám ơn các bạn đã đọc tin.
Chữ ký của ngoclinh2501 Xin chào, mình là ngoclinh2501, Tham gia http://thuthuataccess.com/forum từ ngày 03-09 -12.
Reply
Những người đã cảm ơn
#2
Vì bạn đã biết một chút về VBA nên bạn hãy dùng công cụ ghi Macro.
Bước 1:
Vào Excel, nhấn nút Ghi Macro và thao tác
+ Mở file Excel cần chèn dòng
+ Chuyển đến dòng cần chèn
+ Chèn 1 dòng
+ Đóng File.
+ Kết thúc Ghi Macro
Mã PHP:
Sub OpenInsertRow()
'
OpenInsertRow Macro
' For Inserting a row in an Excel File
'

'
    Workbooks.Open Filename:="E:\My Documents\NHóm 4 CP.xls"
    Rows("3:3").Select
    Selection.Insert Shift:=xlDown
    Range("A4").Select
    ActiveWindow.Close
End Sub 
Bước 2: Sử dụng đoạn code đã ghi, đưa vào Access.
Đưa thủ tục này vào một Module trên Access
Bước 3: Sửa đoạn code chút ít bằng cách thêm Tham chiếu (Refrences) đến MicrosoftExcel hoặc tạo ra đối tượng Excel theo cách sau đây của tôi
[[Thường có 2 cách để tương tác với chương trình ngoài với 2 biện pháp là
1. Liên kết sớm (Early Bind) dùng phương pháp tham chiếu Refrence đến bộ thư viện MicrosoftExcel và
2. Liên kết muộn (Late bind) cách tôi dùng ở đây.
Cách 1 thì chính tắc và giúp bạn sử dụng được tính năng Intelisense của trình soạn thảo VBA va truy cập các đối tượng của Excel dễ dàng. Nhưng khi có sự thay đổi của bộ thư viện (ví dụ cài đặt phiên bản mởi) rất có thể có lỗi xảy ra.
Cách 2 thì khi nào dùng mới gọi ra, có thể gây lỗi do sử dụng một số đối tượng của Excel nhưng chưa khởi tạo biến. Tuy nhiên, với các anh chị có kinh nghiệm thì dùng Late bound sẽ tiện hơn và không gặp lỗi khi biên dịch chương trình]]
Mã PHP:
Option Compare Database

Sub OpenInsertRow
()
'
OpenInsertRow Macro
' For Inserting a row in an Excel File
'

'
    ' 
Doan code de ket noi voi Excel
    Dim ExApp 
As Object
    Dim ExBook 
As Object
    Dim ExSheet 
As Object
    
' Khoi tao mot so hang so lien quan cua Excel de tranh loi
    Const xlDown = -4121
    ' 
Khoi tao mot Doi tuong Excel (Excel Application Instance)
    
Set ExApp CreateObject("Excel.Application")
    
' Hien thi cua so Excel
    ExApp.Visible = True
    
    ' 
Mo tai lieu
    Set ExBook 
ExApp.Workbooks.Open(Filename:="E:\My Documents\NHóm 4 CP.xls")
    
' Gan Sheet can chen dong voi Sheet1
    Set ExSheet = ExBook.Sheets("Sheet1")
    With ExSheet
        ' 
Chen them dong vao dong so 3
        
.Rows("3:3").Insert Shift:=xlDown
    End With
    
' Dong Worbkook
    ExBook.Close True
    ' 
Giai phong cac bien
    Set ExSheet 
Nothing
    Set ExBook 
Nothing
    Set ExApp 
Nothing
End Sub 

Thế là hoàn thành nhiệm vụ. Bạn có thể xem qua và ứng dụng vào mục tiêu của bạn nhé!
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn Noname , Xuân Thanh
#3
Nói thêm với các bạn là các định nghĩa biến Object như của paulsteigel là tổng quát nhất. Ngoài ra bạn cũng có thể dùng ngay các phương thức của Excel trong Access nếu bạn dùng thêm Microsoft Excel xx Object Libary trong tham chiếu Reference

Mã PHP:
Option Compare Database
Option Explicit

Sub InsertRows
()
' Dinh nghia bien Excel,ten file Excel can mo, Workbook, Worksheet
    Dim Ex As Excel.Application
    Dim Wb As Workbook
    Dim Ws As Worksheet
    Dim FileEx As String
    FileEx = "D:\Excel\abc.xls"
    '
FileEx CurrentProject.Path "\abc.xls"

' Mo file Excel 
    Set Ex = New Excel.Application
    Ex.Visible = True
    Set Wb = Ex.Workbooks.Open(FileEx)
    Set Ws = Wb.Worksheets("ABC")

Chen them mot dong duoi dong so 3
    Ws
.Range("A3").EntireRow.Insert Shift:=xlDown

' Giai phong bien
    Set Ws = Nothing: Set Wb = Nothing: Set Ex = Nothing
End Sub 
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Noname , paulsteigel , Minh Tiên


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Lỗi không tạo file mới bằng định dạng .mdb feeling 4 86 29-11-16, 04:22 PM
Bài mới nhất: feeling
  [Help] Lỗi "A problem occurred while Microsoft Access was communicating with the OLE server thanhoai 1 109 03-11-16, 03:53 PM
Bài mới nhất: maidinhdan
  [Lỗi] Cúp điện ---> lỗi access 2013 biencuong86 3 149 26-10-16, 04:30 PM
Bài mới nhất: maidinhdan
  [Hỏi] Cách loại bỏ icon Filter trên Datasheet Form có nguồn là Query. toancvp 2 102 19-10-16, 08:53 PM
Bài mới nhất: toancvp
  cách sửa lỗi cant find project or library trungminh 4 232 01-10-16, 03:37 PM
Bài mới nhất: maidinhdan

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ