Tôi muốn sao chép nội dung của tệp excel vào khay nhớ tạm, sử dụng cùng một dấu tách và định dạng bất kể cấu hình người dùng.Excel vào clipboard với dấu phân cách thập phân vĩ mô
Dưới đây là vĩ mô của tôi:
Private Sub CommandButton1_Click()
'save number separators
Dim d, t, u
d = Application.DecimalSeparator
t = Application.ThousandsSeparator
u = Application.UseSystemSeparators
'set number separators
With Application
.DecimalSeparator = "."
.ThousandsSeparator = ","
.UseSystemSeparators = True
End With
'create temporary copy
ActiveSheet.Copy
'set number format
ActiveSheet.Range("H2:I150").NumberFormat = "0.0000000000"
[...]
'copy sheet to clipboard
ActiveSheet.Range("A1:O150").Copy
'disable messages (clipboard)
Application.DisplayAlerts = False
'close temporary copy
ActiveWorkbook.Close SaveChanges:=False
'reenable messages
Application.DisplayAlerts = True
'reset original separators
With Application
.DecimalSeparator = d
.ThousandsSeparator = t
.UseSystemSeparators = u
End With
End Sub
Nếu tôi không đặt lại các thiết bị tách gốc ở cuối, tất cả mọi thứ hoạt động tốt, nhưng điều này là không thể chấp nhận được đối với tôi.
Nếu tôi đặt lại dấu phân tách (như được thấy trong mã này), thì nội dung của khay nhớ tạm sẽ có dấu tách riêng của người dùng, chứ không phải dấu phân cách mà tôi đã xác định lúc đầu.
Bất kỳ ý tưởng nào về cách sửa lỗi này?
Không có cách nào để Excel đọc một số/công thức như định dạng được chấp nhận tại địa phương? Không thể nhớ ra khỏi đỉnh đầu của tôi làm thế nào để làm điều này. Câu hỏi quan trọng, mặc dù, là nơi dữ liệu được đi sau khi clipboard? Nếu nó dán vào Excel ... bạn không thể bỏ qua các dấu phân cách và tin tưởng rằng hai cửa sổ mở của Excel bởi cùng một người dùng sẽ sử dụng cùng một cài đặt định dạng cục bộ? Có lẽ tôi hiểu lầm tại sao bạn muốn làm điều này. –
Dữ liệu sẽ đi vào một ứng dụng khác. Ứng dụng không thực sự quan tâm đến việc sử dụng các dấu phân cách nào, miễn là chúng nhất quán. (mỗi người dùng gửi cùng một). Việc chuyển miền địa phương sẽ cồng kềnh, vì CTRL + C sẽ phải khác với macro, nội dung khôn ngoan, không chỉ định dạng khôn ngoan. –
Cũng mã của bạn đang làm việc hoàn toàn tốt cho tôi. Với mục đích thử nghiệm, tôi đã thay đổi các dấu phân tách trong Excel trước khi chạy mã của bạn. – ManishChristian