• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Các câu trao đổi về VBA/Excel

Nơi trao đổi về VBA (Visual Basic for Application), lập trình cho ứng dụng Microsoft Office, AutoCAD...

Moderator: tungblt

kalanta

Re: Hướng dẫn viết VBA Excel chạy trên ứng dụng VB6

Postby kalanta » Thu 17/12/2009 9:03 pm

Anh cho em hỏi làm cách nào để tự động cập nhật giá trị.
Em đang sử dụng oncomm để nhận giá trị dòng ,áp về.Giả sử ở giây 1 em sẽ nhận được giá trị dòng và em xuất giá trị này ra excel ở cột 1 , hàng 1 ,ở giây 2 em xuất giá trị ra ở cột 1 ,hàng 2.......Em đã xuất được giá trị ra nhưng mỗi lần lại có một file excel tạo ra và mỗi file chỉ có 1 giả trị ứng với cột 1,hàng j.Em sử dụng câu lệnh ExcelBook .Save thì lại hiện lên bảng thông báo hỏi có lưu không , khi em bấm lưu thì VB bị lỗi vì chương trình oncomm đang xảy ra .
Vậy anh có thể giúp em làm cách nào để tự động cập nhật giá trị , ờ giây 1 lưu vào (cột 1, hàng 1) , ở giây 2 (lưu vào cột 1,hàng 2)....chỉ trên cùng cột 1 , hàng j của 1 file excel.
Code của em :
Dim ExcelApp As Excel.Application
Dim ExcelBook As Excel.Workbook
Dim iSheetsPerBook As Integer
Set ExcelApp = New Excel.Application
Set ExcelBook = ExcelApp.Workbooks.Open("D:\kalanta\TaiLieu.xls")
Set ExcelSheet = ExcelBook.Worksheets(1)
ExcelApp.Visible = True
ExcelSheet.Cells(i, j).Value = "Dữ liệu cần ghi"

Mong được các anh hướng dẫn.



User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Hướng dẫn viết VBA Excel chạy trên ứng dụng VB6

Postby truongphu » Thu 17/12/2009 10:19 pm

kalanta wrote:nhưng mỗi lần lại có một file excel tạo ra và mỗi file chỉ có 1 giả trị ứng với cột 1,hàng j.

Nếu code bạn viết bên trên là đúng thì làm gì có chuyện đó

kalanta wrote:Em sử dụng câu lệnh ExcelBook .Save thì lại hiện lên bảng thông báo hỏi có lưu không

sao lại hỏi nữa nhỉ? chẳng biết code của bạn thế nào

Tôi đọc VBA Excel thấy dễ nên viết bài cho vui, chứ thực hành cũng yếu lắm
sau đây là ví dụ mẫu cho bạn: Mỗi giây tự động lưu vào 1 ô kế tiếp trên cùng 1 cột
Lưu file excel vô tư

  1. Dim ExcelApp As New Excel.Application
  2. Dim ExcelBook As Workbook
  3. Dim ExcelSheet As Worksheet
  4. Dim i As Integer, j As Integer, u As Integer
  5.  
  6. Private Sub Command1_Click()
  7. Timer1.Enabled = False
  8. ExcelBook.Save
  9. ExcelBook.Close
  10. ExcelApp.Quit
  11. Unload Me
  12. End Sub
  13.  
  14. Private Sub Form_Load()
  15. Set ExcelBook = ExcelApp.Workbooks.Open(App.Path & "\book1.xls")
  16. Set ExcelSheet = ExcelBook.Worksheets(1)
  17.  
  18. Timer1.Enabled = True
  19. Timer1.Interval = 1000
  20. u = 1
  21. End Sub
  22.  
  23. Private Sub Timer1_Timer()
  24.     j = Format(Now, "ss")
  25.     If j <> i Then
  26.         ExcelSheet.Cells(u, 1).Value = "Giây thu' " & u
  27.         ExcelSheet.Cells(u, 2).Value = Int(Rnd * 32767)
  28.         i = Format(Now, "ss")
  29.         Label1.Caption = "Giây thu' " & u
  30.         u = u + 1
  31.     End If
  32. End Sub
  33.  
Attachments
AutoSave Excel.rar
(2.74 KiB) Downloaded 405 times
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

kalanta

Re: Hướng dẫn viết VBA Excel chạy trên ứng dụng VB6

Postby kalanta » Thu 17/12/2009 10:40 pm

Cảm ơn anh.

ngocvinh
Guru
Guru
Posts: 701
Joined: Wed 23/04/2008 8:14 am
Location: Biên Hòa Đồng Nai
Been thanked: 113 times

Re: Hướng dẫn viết VBA Excel chạy trên ứng dụng VB6

Postby ngocvinh » Thu 24/12/2009 10:06 am

Em có 1 tài liệu Excel có dạng như sau;
col1 col2 col3
1 C1,C2 CE_11212_1
C3,c4
C5,c6
2 R1,R2 CE_11224_6
R3,R4
R5,R6
Em muốn thao tác chuyển qua access có dạng như sau;
col1 col2 col3
1 C1 CE_11212_1
C2 CE_11212_1
C3 CE_11212_1
C4 CE_11212_1
C5 CE_11212_1
C6 CE_11212_1
2 R1 CE_11224_6
R2 CE_11224_6
R3 CE_11224_6
R4 CE_11224_6
R5 CE_11224_6
R6 CE_11224_6
Em chỉ rành về ADOBD không rành thao tác với Excel mong Bác Trương phú hướng dẩn dùm.
.NET

ngocvinh
Guru
Guru
Posts: 701
Joined: Wed 23/04/2008 8:14 am
Location: Biên Hòa Đồng Nai
Been thanked: 113 times

Re: Hướng dẫn viết VBA Excel chạy trên ứng dụng VB6

Postby ngocvinh » Thu 24/12/2009 10:13 am

Đưa lên nhưng định dạng nhảy lung tung em đưa lên File excel
Attachments
data.rar
(1.49 KiB) Downloaded 314 times
.NET

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Hướng dẫn viết VBA Excel chạy trên ứng dụng VB6

Postby truongphu » Thu 24/12/2009 11:05 am

ngocvinh wrote:Em muốn ... có dạng như sau;


1- thì bạn cứ xử lý trong file Excel trước cho vừa ý

ngocvinh wrote:Em muốn thao tác chuyển qua access


2- Tham khảo các hàm chuyển từ Excel sang Access và ngược lại

viewtopic.php?f=7&t=3942
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

huyhungdt32
Posts: 7
Joined: Fri 09/10/2009 1:48 pm

Re: Hướng dẫn viết VBA Excel chạy trên ứng dụng VB6

Postby huyhungdt32 » Thu 24/12/2009 11:37 am

cho em hỏi một câu là mình muốn dữ liệu ghi sang excel tự động căn vào giữa cell thì làm thế nào

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Hướng dẫn viết VBA Excel chạy trên ứng dụng VB6

Postby truongphu » Thu 24/12/2009 12:32 pm

  1. Range("A1", "E1").HorizontalAlignment = xlCenter
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

huyhungdt32
Posts: 7
Joined: Fri 09/10/2009 1:48 pm

Re: Hướng dẫn viết VBA Excel chạy trên ứng dụng VB6

Postby huyhungdt32 » Fri 25/12/2009 6:03 pm

sao em làm không đc anh ơi. Đây là đoạn chương trình của em anh xem giùm em. Em muốn dữ liệu trong các cột nhiệt độ(lấy từ text5) và cột Addr salve(lấy từ text4 hoặc text6) sẽ tự động căn vào giữa. Em muốn hỏi một câu nữa là làm sao để các cột của excel tự thay đổi kích thước cho phù hợp vơí dữ liệu ghi vào.
  1. Private Sub Timer2_Timer()
  2. If c < 1 Then
  3. Set ExcelApp = New Excel.Application     'Create a new instance of Excel
  4. c = 2
  5. Set ExcelBook = ExcelApp.Workbooks.Add   'Add a new workbook
  6. End If
  7.  
  8. Set Excelsheet = ExcelBook.Worksheets(1) 'Work with the first worksheet
  9. ExcelApp.Visible = True                  'Show it to the user
  10. Range("A1", "E1").HorizontalAlignment = xlCenter
  11. Excelsheet.Cells(1, 1).Value = "Ngay"
  12. Excelsheet.Cells(1, 2).Value = "Gio"
  13. Excelsheet.Cells(1, 3).Value = "Nhiet do"
  14. Excelsheet.Cells(1, 4).Value = "Addr Slave"
  15. a = a + 1
  16. Excelsheet.Cells(a, b).Value = Text1
  17. b = 2
  18. Excelsheet.Cells(a, b).Value = Text2
  19. b = 3
  20. Excelsheet.Cells(a, b).Value = Text5
  21. b = 4
  22. If Option1.Value = True Then
  23. Excelsheet.Cells(a, b).Value = Text4
  24. Else
  25. Excelsheet.Cells(a, b).Value = Text6
  26. End If
  27. b = 1
  28. End Sub

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Hướng dẫn viết VBA Excel chạy trên ứng dụng VB6

Postby truongphu » Fri 25/12/2009 6:44 pm

Bạn đã hiểu thế nào về Range?
vd Range("A1", "E1")?
Đó là vùng chọn đi từ A1 đến E1
Range("A1", "E1").HorizontalAlignment = xlCenter
thì chỉ vùng nầy chịu format canh giữa

xem lại chúng đã canh giữa chưa mà bảo làm không được?

* cột căn giữa:

Code: Select all

Range("G:H").HorizontalAlignment = xlCenter


* tự khít:

Code: Select all

Columns(8).AutoFit


Bạn viết code đến như thế là tự nghiên cứu lấy được rồi, cố tìm tòi thì nhớ và hiểu sâu hơn là hỏi và chép
Chúc bạn nhanh tiến
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

huyhungdt32
Posts: 7
Joined: Fri 09/10/2009 1:48 pm

Re: Các câu trao đổi về VBA/Excel

Postby huyhungdt32 » Fri 25/12/2009 10:26 pm

Em cảm ơn anh em làm đc rồi .


Return to “Visual Basic for Application (VBA)”

Who is online

Users browsing this forum: No registered users and 2 guests