vba cho button copy dữ liệu từ clipboard ra bảng excel.

Liên hệ QC

hp19892

Thành viên mới
Tham gia
19/8/21
Bài viết
16
Được thích
2
Chào mọi người, e đang tập tành VBA, mới viết được code cho button clear data trong vùng bảng của sheet PLAN cần làm. Nay muốn làm thêm 1 button sẽ copy dữ liệu từ clipboard vào vùng bảng tính sau khi đã clear data. Em có để 2 sheets trong file đính kém. Yêu cầu ở đây đó là :
- từ Sheet data sau khi chọn toàn bộ vùng có dữ liệu và Ctrl+C, lúc này dữ liệu đang lưu trong clipboad, thì sẽ sang sheet Plan để copy và sử dụng nút get New Plan để lấy dữ liệu từ clipboard vào phần bảng tương ứng với từng cột dữ liệu . (ở đây ko yêu cầu VBA copy data từ sheet sang sheet)
Vướng mắc của e ở đây là e viết đoạn code
Sub Get_New_data()

Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
DataObj.GetFromClipboard

SText = DataObj.GetText(1)

ActiveSheet.Range("A4").Value = SText

End Sub
Lúc này chỉ copy được dữ liệu từ clipboard vào được mỗi ô A4 của sheet Plan, mà dữ liệu ko tách ra từng cột . Mong các bác chỉ giáo thêm.
 

File đính kèm

  • Practice code VBA_1.xlsm
    75.7 KB · Đọc: 12
Bạn thử sửa dòng: ActiveSheet.Range("A4").Value = SText
thêm .resize vào: ActiveSheet.Range("A4").resize (x , y) .value= SText . Giờ đi tìm cái giá trị x, y (x là số hàng, y là số cột khi bạn chọn vùng bên sheet Data)
Cái .GetFromClipboard này chắc kiểu giống như file csv 1 dãy chuỗi nối lại với nhau, chắc phải lại tách cột từ chuỗi rồi mới ghi ra kết quả. Không rành cái này.
 
Lần chỉnh sửa cuối:
Upvote 0
Chào mọi người, e đang tập tành VBA, mới viết được code cho button clear data trong vùng bảng của sheet PLAN cần làm. Nay muốn làm thêm 1 button sẽ copy dữ liệu từ clipboard vào vùng bảng tính sau khi đã clear data. Em có để 2 sheets trong file đính kém. Yêu cầu ở đây đó là :
- từ Sheet data sau khi chọn toàn bộ vùng có dữ liệu và Ctrl+C, lúc này dữ liệu đang lưu trong clipboad, thì sẽ sang sheet Plan để copy và sử dụng nút get New Plan để lấy dữ liệu từ clipboard vào phần bảng tương ứng với từng cột dữ liệu . (ở đây ko yêu cầu VBA copy data từ sheet sang sheet)
Vướng mắc của e ở đây là e viết đoạn code
Sub Get_New_data()

Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
DataObj.GetFromClipboard

SText = DataObj.GetText(1)

ActiveSheet.Range("A4").Value = SText

End Sub
Lúc này chỉ copy được dữ liệu từ clipboard vào được mỗi ô A4 của sheet Plan, mà dữ liệu ko tách ra từng cột . Mong các bác chỉ giáo thêm.
Mong các bác xem giúp e với...e thử vài cách trên mạng mà chưa thực hiện được ạ
 
Upvote 0
Chào mọi người, e đang tập tành VBA, mới viết được code cho button clear data trong vùng bảng của sheet PLAN cần làm. Nay muốn làm thêm 1 button sẽ copy dữ liệu từ clipboard vào vùng bảng tính sau khi đã clear data. Em có để 2 sheets trong file đính kém. Yêu cầu ở đây đó là :
- từ Sheet data sau khi chọn toàn bộ vùng có dữ liệu và Ctrl+C, lúc này dữ liệu đang lưu trong clipboad, thì sẽ sang sheet Plan để copy và sử dụng nút get New Plan để lấy dữ liệu từ clipboard vào phần bảng tương ứng với từng cột dữ liệu . (ở đây ko yêu cầu VBA copy data từ sheet sang sheet)
Vướng mắc của e ở đây là e viết đoạn code
Sub Get_New_data()

Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
DataObj.GetFromClipboard

SText = DataObj.GetText(1)

ActiveSheet.Range("A4").Value = SText

End Sub
Lúc này chỉ copy được dữ liệu từ clipboard vào được mỗi ô A4 của sheet Plan, mà dữ liệu ko tách ra từng cột . Mong các bác chỉ giáo thêm.
Vấn đề : đối tượng xử lý là clipboard tức là nội dung của clipboard thường là gì .... thì không biết (?) , vậy thì làm sao xử lý đối tượng đó

Copy 1 ô nội dung là clipboard đó là đúng rồi
 
Upvote 0
Chào mọi người, e đang tập tành VBA, mới viết được code cho button clear data trong vùng bảng của sheet PLAN cần làm. Nay muốn làm thêm 1 button sẽ copy dữ liệu từ clipboard vào vùng bảng tính sau khi đã clear data. Em có để 2 sheets trong file đính kém. Yêu cầu ở đây đó là :
- từ Sheet data sau khi chọn toàn bộ vùng có dữ liệu và Ctrl+C, lúc này dữ liệu đang lưu trong clipboad, thì sẽ sang sheet Plan để copy và sử dụng nút get New Plan để lấy dữ liệu từ clipboard vào phần bảng tương ứng với từng cột dữ liệu . (ở đây ko yêu cầu VBA copy data từ sheet sang sheet)
Vướng mắc của e ở đây là e viết đoạn code
Sub Get_New_data()

Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
DataObj.GetFromClipboard

SText = DataObj.GetText(1)

ActiveSheet.Range("A4").Value = SText

End Sub
Lúc này chỉ copy được dữ liệu từ clipboard vào được mỗi ô A4 của sheet Plan, mà dữ liệu ko tách ra từng cột . Mong các bác chỉ giáo thêm.
Làm theo dự đoán, không biết đúng ý hay không? Có gì trình bày tiếp.
Mã:
Sub Get_New_data()
Dim DataObj As MSForms.DataObject
Dim mytxt As String, Arr() As String, DataMerge()
Dim qq() As String, i As Integer, j As Long, aCol As Integer, aRow As Integer
On Error GoTo Loi
    Set DataObj = New MSForms.DataObject
    DataObj.GetFromClipboard
    mytxt = DataObj.GetText(1)
    Arr() = Split(mytxt, vbNewLine)
    aRow = UBound(Arr): aCol = UBound(Split(Arr(0), vbTab)) + 1
    ReDim DataMerge(1 To aRow, 1 To aCol)
        For i = 1 To aRow
            qq = Split(Arr(i - 1), vbTab)
            For j = 1 To UBound(qq) + 1
                DataMerge(i, j) = qq(j - 1)
            Next j
        Next
    ActiveSheet.Range("A4").Resize(aRow, aCol).Value = DataMerge
Loi:
End Sub
 
Upvote 0
Em đã thử và code chạy ok. thank u bác giờ e hiểu hơn về cách tách dữ liệu trong clipboard rồi.
 
Upvote 0
Chào mọi người, e đang tập tành VBA, mới viết được code cho button clear data trong vùng bảng của sheet PLAN cần làm. Nay muốn làm thêm 1 button sẽ copy dữ liệu từ clipboard vào vùng bảng tính sau khi đã clear data. Em có để 2 sheets trong file đính kém. Yêu cầu ở đây đó là :
- từ Sheet data sau khi chọn toàn bộ vùng có dữ liệu và Ctrl+C, lúc này dữ liệu đang lưu trong clipboad, thì sẽ sang sheet Plan để copy và sử dụng nút get New Plan để lấy dữ liệu từ clipboard vào phần bảng tương ứng với từng cột dữ liệu . (ở đây ko yêu cầu VBA copy data từ sheet sang sheet)
Vướng mắc của e ở đây là e viết đoạn code
Sub Get_New_data()

Dim DataObj As MSForms.DataObject
Set DataObj = New MSForms.DataObject
DataObj.GetFromClipboard

SText = DataObj.GetText(1)

ActiveSheet.Range("A4").Value = SText

End Sub
Lúc này chỉ copy được dữ liệu từ clipboard vào được mỗi ô A4 của sheet Plan, mà dữ liệu ko tách ra từng cột . Mong các bác chỉ giáo thêm.
Trong trường hợp của bạn thì đâu cần phải dán từ clipboard ra làm gì nhỉ! Đơn giản vì lúc đó Excel đang tự quản vùng copy nên bạn chỉ cần dùng lệnh .PasteSpecial là xong.
 
Upvote 0
Trong trường hợp của bạn thì đâu cần phải dán từ clipboard ra làm gì nhỉ! Đơn giản vì lúc đó Excel đang tự quản vùng copy nên bạn chỉ cần dùng lệnh .PasteSpecial là xong.
Tại vì yêu cầu của bài là copy dữ liệu từ clipboard vì mục đích là copy từ 1 app khác chứ ko phải sheet to sheet trong excel. Vì mình cũng mới đang tự mày mò học VBA nên các lệnh và hàm thủ tục mình chưa dành lắm.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom