Nguyenlethanh1912
Thành viên mới

- Tham gia
- 26/6/21
- Bài viết
- 3
- Được thích
- 0
File đính kèm
Lần chỉnh sửa cuối:
Đối với bạn là "CÓ" chứ đối với tôi là "hơi khó".Câu trả lời là: CÓ
Anh có thể giúp được khôngCâu trả lời là: CÓ
Câu trả lời là: CHỜ CÂU TRẢ LỜI CỦA CÁC THÀNH VIÊN KHÁC
Thớt hỏi "có cách nào" không thì tôi trả lời là CÓ thôi bác àĐối với bạn là "CÓ" chứ đối với tôi là "hơi khó".
Cứ thấy bảng tính có merged cells là tôi chạy trước.
Tổng hợp:Anh có thể giúp được không
Rốt cuộc cũng phải gãi ngứa, không chờ đượcTổng hợp:
...
Cũng phải thử thêm về SQL bác à. Đã có kết quả rồi mà không đưa lên thì phí công.Rốt cuộc cũng phải gãi ngứa, không chờ được![]()
Kiểu làm việc ấy xưa rồi.Cũng phải thử thêm về SQL bác à. Đã có kết quả rồi mà không đưa lên thì phí công.
Nhưng cũng nhờ đó mà biết được vụ dùng VBA đặt lại dấu phân cách thập phân của Control Panel từ dấu phẩy sang dấu chấm để khắc phục lỗi kết quả truy vấn SQL đối với dữ liệu có số thập phân.
Ngay như em đây, không có nhu cầu làm việc với dữ liệu lớn nên không học sử dụng Power Pivote hoặc các ứng dụng Data Model khác làm gì. Cứ có nhu cầu đến đâu thì lao vào học và thực hành. Còn bi chừ thì cứ có gì xài nấy thôi àKiểu làm việc ấy xưa rồi.
GPE này có tật thấy mấy cái ấy cho là của lạ nên cứ giữ mãi mà không chịu cập nhật các phương pháp mới.
Truy vấn hằng trăm files dữ liệu không phải là công việc của Excel-VBA.
Tại sao bà con ăn cơm mãi rồi chán, thèm phở. Ăn phở rắc rối và nguy hiểm bỏ bố mà người ta vẫn thử.Ngay như em đây, không có nhu cầu làm việc với dữ liệu lớn nên không học sử dụng Power Pivote hoặc các ứng dụng Data Model khác làm gì. Cứ có nhu cầu đến đâu thì lao vào học và thực hành. Còn bi chừ thì cứ có gì xài nấy thôi à![]()
Không vấn đề gì nhưng tính em khác mọi người, không có động cơ thì không nuốt được kiến thức mới. Em thử học vài thứ như Google Sheets script, Python mà nuốt không vô vì thực sự không có nhu cầu, học chơi học không được.Tại sao bà con ăn cơm mãi rồi chán, thèm phở. Ăn phở rắc rối và nguy hiểm bỏ bố mà người ta vẫn thử.
Chơi mấy cái công cụ mới đâu có gì nguy hiểm. Hay là do vậy mà không hào hứng ?![]()
Đó là tính chung chứ đâu phải khác mọi người.Không vấn đề gì nhưng tính em khác mọi người, không có động cơ thì không nuốt được kiến thức mới. Em thử học vài thứ như Google Sheets script, Python mà nuốt không vô vì thực sự không có nhu cầu, học chơi học không được.
Vụ này mới học nên không rành. Tôi dùng Win 10 64bit, office 32bit. Bác nghiên cứu sửa, bổ sung giúp.Mở file thì bị lổiView attachment 261382
Vụ nầy mình không biết, nhờ các bạn khác thêm lệnh cho Office 64 bitVụ này mới học nên không rành. Tôi dùng Win 10 64bit, office 32bit. Bác nghiên cứu sửa, bổ sung giúp.
Đại khái thì với kiểu cũ, các API dùng con trỏ Long và hàm dùng con trỏ căn bản; qua phiên bản VBA7 và Win64 thì con trỏ dùng kiểu Long Long, và con trỏ hàm dùng PtrSafe để kết nối.Vụ này mới học nên không rành. Tôi dùng Win 10 64bit, office 32bit. Bác nghiên cứu sửa, bổ sung giúp.
Theo hướng dẫn của bác thì em làm đại đoạn khai báo đó thành như thế này (máy em chạy ra kết quả bình thường, không la mắng gì):Đại khái thì với kiểu cũ, các API dùng con trỏ Long và hàm dùng con trỏ căn bản; qua phiên bản VBA7 và Win64 thì con trỏ dùng kiểu Long Long, và con trỏ hàm dùng PtrSafe để kết nối.
cóp từ trang quép của Microsoft:
View attachment 261384
#If Win64 Then
Private Declare PtrSafe Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" ( _
ByVal Locale As LongLong, _
ByVal LCType As LongLong, _
ByVal lpLCData As String) As Boolean
#Else
Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" ( _
ByVal Locale As Long, _
ByVal LCType As Long, _
ByVal lpLCData As String) As Boolean
#End If
#If VBA7 Then
Private Declare PtrSafe Function GetUserDefaultLCID% Lib "kernel32" ()
#Else
Private Declare Function GetUserDefaultLCID% Lib "kernel32" ()
#End If
Private Const LOCALE_SDECIMAL = &HE
#If VBA7 Then
Private Declare PtrSafe Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" ( _
ByVal Locale As LongPtr, _
ByVal LCType As LongPtr, _
ByVal lpLCData As String) As Boolean
Private Declare PtrSafe Function GetUserDefaultLCID% Lib "kernel32" ()
#Else
Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" ( _
ByVal Locale As Long, _
ByVal LCType As Long, _
ByVal lpLCData As String) As Boolean
Private Declare Function GetUserDefaultLCID% Lib "kernel32" ()
#End If
Private Const LOCALE_SDECIMAL = &HE
Cách khai báo của bác chưa đúng, vba6 không có ptrsafe. Đối với vba7 (excel 2010+), nếu là excel 64 bit (win64=true, win64 ở đây là excel chứ không phải windows) thì cần thêm ptrsafe vào khai báo và các địa chỉ phải khai báo kiểu LongLong. Với vba7+win32 (excel 32 bit, windows 32 hoặc 64) thì có khai báo ptrsafe hoặc không cũng như nhau và các địa chỉ kiểu Long. Ta có thể gộp chung 2 khai báo vab7 thành declare ptrsafe + LongPtr, LongPtr là alias của Long trong win32 và LongLong trong win64. VBA6 (excel 2007-) thì không có ptrsafe và longptr.Mới tìm hiểu thêm thì viết thế này để dùng cho Office 64
Rich (BB code):#If VBA7 Then Private Declare PtrSafe Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" ( _ ByVal Locale As LongPtr, _ ByVal LCType As LongPtr, _ ByVal lpLCData As String) As Boolean Private Declare Function GetUserDefaultLCID% Lib "kernel32" () #Else Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" ( _ ByVal Locale As Long, _ ByVal LCType As Long, _ ByVal lpLCData As String) As Boolean Private Declare PtrSafe Function GetUserDefaultLCID% Lib "kernel32" () #End If Private Const LOCALE_SDECIMAL = &HE