-
Xuất ra Excel không mong muốn
Accessv07 > 28-06-23, 06:15 PM
Sau khi xuất ra Excel từ bài viết của ongke0711, Query dạng .Range("A2").CopyFromRecordset rs
thì ô Excel hiển thị "=0.95*100" mà không hiển thị kết quả "95"
và tôi phải chạy để ra kết quả "95"
Mã PHP:For i = 1 To rs.RecordCount Step 1
ki = (.Cells(i, 7).Value)
If ki <> "" Then
.Cells(i, 7).Value = ki
End If
Next i
Thêm dòng lệnh làm cho ứng dụng chạy chậm, vậy có cách nào khác gán .value "=0.95*100" bằng công thức "95" nhanh gọn không? -
RE: Xuất ra Excel không mong muốn
ongke0711 > 29-06-23, 10:33 AM
(28-06-23, 06:15 PM)Accessv07 Đã viết: Sau khi xuất ra Excel từ bài viết của ongke0711, Query dạng .Range("A2").CopyFromRecordset rs
thì ô Excel hiển thị "=0.95*100" mà không hiển thị kết quả "95"
và tôi phải chạy để ra kết quả "95"
Mã PHP:For i = 1 To rs.RecordCount Step 1
ki = (.Cells(i, 7).Value)
If ki <> "" Then
.Cells(i, 7).Value = ki
End If
Next i
Thêm dòng lệnh làm cho ứng dụng chạy chậm, vậy có cách nào khác gán .value "=0.95*100" bằng công thức "95" nhanh gọn không?
Code là từ bài nào bạn? tôi không nhớ nó trong topic nào. -
RE: Xuất ra Excel không mong muốn
Accessv07 > 29-06-23, 01:18 PM
(29-06-23, 10:33 AM)ongke0711 Đã viết:
(28-06-23, 06:15 PM)Accessv07 Đã viết: Sau khi xuất ra Excel từ bài viết của ongke0711, Query dạng .Range("A2").CopyFromRecordset rs
thì ô Excel hiển thị "=0.95*100" mà không hiển thị kết quả "95"
và tôi phải chạy để ra kết quả "95"
Mã PHP:For i = 1 To rs.RecordCount Step 1
ki = (.Cells(i, 7).Value)
If ki <> "" Then
.Cells(i, 7).Value = ki
End If
Next i
Thêm dòng lệnh làm cho ứng dụng chạy chậm, vậy có cách nào khác gán .value "=0.95*100" bằng công thức "95" nhanh gọn không?
Code là từ bài nào bạn? tôi không nhớ nó trong topic nào.
Bài viết khá lâu rồi khoảng 5 năm gì đó.
File .accdb của tôi
https://www.mediafire.com/file/d107z2bjr...6.rar/file -
RE: Xuất ra Excel không mong muốn
ongke0711 > 30-06-23, 05:35 PM
(29-06-23, 01:18 PM)Accessv07 Đã viết: Bài viết khá lâu rồi khoảng 5 năm gì đó.
File .accdb của tôi
https://www.mediafire.com/file/d107z2bjr...6.rar/file
- Nên hạn chế cách duyệt từng dòng để xử lý nếu được. File bạn 18k dòng, duyệt từng dòng đuối luôn, chưa kể bạn mở Excel lên tương tác qua lại từng dòng một, nó càng làm chậm thêm. Đối với Excel cũng nên tránh việc tương tác giữa code VBA với từng Cell như vậy, thường người ta xử lý thẳng trên mảng (array) rồi đổ nguyên mảng đó xuống sheet Excel 1 lần thôi.
- Đã dùng CSDL Access thì nên xử lý nó trong Access rồi Export ra Excel cho nhanh.
- Code file bạn có hạn chế là phải mở Excel Application rồi mới chạy được.
Bạn xem cách tôi dùng Docmd.TransferSpreadSheet. Từ 3 phút xuống còn 0.5s
Link: https://www.mediafire.com/file/c7ud2ysql...accdb/file -
RE: Xuất ra Excel không mong muốn
Accessv07 > 04-07-23, 11:56 PM
Như vậy theo ongke0711 xuất ra Excel theo kiểu .CopyFromRecordset rs hoặc DoCmd.TransferSpreadsheet thì nhanh nhưng ô chỉ hiển thị kiểu value mà không phải công thức (đôi khi trong ứng dụng ta muốn kết quả là từ công thức nào đó).
Mục đích của tôi là xuất được như ở cột C, hiển thị là kết quả nhưng khi bấm vào đó là công thức.
Hình kèm theo:
https://www.mediafire.com/view/7fc3oczne...1.png/file
Khả năng sẽ có một dòng code kiểu như
.Range("C:C"). Cập nhật công thức để biến cột B thành cột C như hình trên.
Trong xuất Excel ví dụ rs!FieldA = "=0.54*78637"
nếu .cells(1,1)=rs!FieldA thì ra kiểu text
nhưng nếu .cells(1,1)=(rs!FieldA) thì lại cho ra công thức.
Nếu xuất ra Excel tốt theo tôi các ứng dụng không cần dùng đến report nữa.
Mong anh em nào biết chỉ giúp! -
RE: Xuất ra Excel không mong muốn
ongke0711 > 05-07-23, 03:07 AM
(04-07-23, 11:56 PM)Accessv07 Đã viết: Như vậy theo ongke0711 xuất ra Excel theo kiểu .CopyFromRecordset rs hoặc DoCmd.TransferSpreadsheet thì nhanh nhưng ô chỉ hiển thị kiểu value mà không phải công thức (đôi khi trong ứng dụng ta muốn kết quả là từ công thức nào đó).
Mục đích của tôi là xuất được như ở cột C, hiển thị là kết quả nhưng khi bấm vào đó là công thức.
Hình kèm theo:
https://www.mediafire.com/view/7fc3oczne...1.png/file
Nếu xuất ra Excel tốt theo tôi các ứng dụng không cần dùng đến report nữa.
- Muốn hiển thị dạng công thức thì xử lý trong Excel luôn. Tôi cũng làm 2 cách, một là duyệt từng dòng, 2 là TransferSpeadsheet (thêm 1 dòng code).
Link demo: https://www.mediafire.com/file/8t1sif7w0...accdb/file
- Vể Report thì tuỳ ứng dụng mà dùng nó chứ không phải cái gì cũng xuất Excel. Ví dụ: in Hoá đơn, in tem hàng loạt, in các báo cáo v.v.. Nếu qua Excel thì phải thêm công đoạn thiết kế mới ra báo cáo. Xuất Excel chủ yếu là xuất về mặt dữ liệu sau khi tổng hợp. Nói chung Microsoft thiết kế đối tượng Report cho Access không phải để chơi. -
RE: Xuất ra Excel không mong muốn
Accessv07 > 05-07-23, 09:15 PM
.Range("C:C").Formula = Range("B:B").Value
Rất chính xác!
Cảm ơn ongke0711, cảm ơn Diễn đàn Thuthuataccess.com.