Hiển thị các bài đăng có nhãn ExcelSubVBA. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn ExcelSubVBA. Hiển thị tất cả bài đăng

 Ứng dụng: In liên tục phiếu lương, phiếu thu, chi, hợp đồng,...

Chuẩn bị sheet dữ liệu và sheet form in. Trong đó:

- Sheet Dữ liệu có cột số thứ tự

- Sheet Form in làm công thức lấy thông tin từ sheet Dữ liệu theo số thứ tự (thường dùng hàm VLOOKUP, Index, match, Aggregate, Filter,... để lấy thông tin sang)

- Thiết lập vùng in cho sheet Form in

- Nhập 2 ô bên ngoài vùng in để in từ số nào đến số nào. (Ví dụ: Ô P1 nhập in từ số nào, ô P2 nhập in từ số nào )

Các bước thực hiện đưa code VBA vào file và in liên tục:

Bước 1: Copy code vba in liên tục theo số thứ tự vào file

Mở file Excel, nhấn Alt+F11 (hoặc Alt+Fn+F11) để vào cửa sổ VBA. Trong cửa sổ VBA thì vào Insert => chọn Module và Copy code vba dưới đây và paste  vào Module vừa tạo

Sub InPhieuLuong()

    Dim bd As Integer

    Dim kt As Integer

    Dim i As Integer

    Dim o As Integer

    bd = Range("P1").Value '=> In tu Stt nao

    kt = Range("P2").Value '=> In den Stt nao

    o = Range("E9").Value '=> Cong thuc trong form in duoc lay theo stt tai o nay

    If bd > kt Or IsNumeric(bd) = False Or IsNumeric(kt) = False Or bd <= 0 Or kt <= 0 Then

        MsgBox "Nhap sai so bat dau hoac ket thuc", vbCritical

        Exit Sub

    End If

    For i = bd To kt

        o = i

        ActiveSheet.PrintOut

        Application.Wait Now + TimeValue("00:00:01")

    Next i

    MsgBox "Da hoan thanh in " & kt - bd + 1 & " ban, tu so " & bd & " den " & kt, vbInformation

End Sub



Bước 2: Sửa code VBA theo cấu trúc Form in. Gồm 3 chỗ sửa

bd = Range("P1").Value : Thay địa chỉ ô P1 tương ứng là ô nhập số bắt đầu (Ví dụ: bạn nhập in từ số bắt đầu tại ô X1 thì P1 bằng X1

kt = Range("P2").Value: Thay địa chỉ ô P2 tương ứng là ô nhập số kết thúc

o = Range("E9").Value: Thay địa chỉ ô E9 tương ứng là ô chạy stt để lấy thông tin sang form in

Bước 3: Tạo nút bấm in liên tục

Trở lại màn hình Excel, tại sheet Form in thực hiện chèn 1 shape bất kỳ (Insert => Shape). Rồi click chuột phải vào Shape chọn Asign Macro và trỏ vào tên Macro InPhieuLuong

Bước 4: Thực hiện in

Điền số bắt đầu và số kết thúc để in từ số nào đến số nào và nhấn vào nút bấm tạo ở bước 3 để in liên tục




 Trong nhiều doanh nghiệp hiện nay, tính năng nhập dữ liệu online của Googlesheet được khai thác để nhiều người sử dụng và nhập liệu đồng thời. Và người dùng có nhu cầu lấy dữ liệu từ Googlesheet về Excel để phục vụ cho việc lưu trữ, xử lý số liệu, làm đa dạng các báo cáo hơn

Bài viết này sẽ hướng dẫn dùng VBA để lấy dữ liệu từ Googlesheet về bảng tính Excel

Bước 1: Thực hiện chia sẻ file

Vào file cần lấy dữ liệu trên Googlesheet  => Bấm vào Chia sẻ (Share) => Ở phần Quyền truy cập chung (General access) =>  Chọn Bất kỳ ai có đường liên kết (Anyone with this link)

Bước 2: Lấy chuỗi khóa trong đường link file Googlesheet

Giả sử link của 1 file googlesheet là:

https://docs.google.com/spreadsheets/d/1jWJqRmx7T6GkNTMJUTrjR96muNKgrmokd_ZAViSaXT0/edit#gid=1039827565

Thì chuỗi khóa là đoạn sau d/ và trước /edit:  

"1jWJqRmx7T6GkNTMJUTrjR96muNKgrmokd_ZAViSaXT0"

Bước 3: Sao chép đoạn code sau vào môi trường VBA

Mở file Excel trên máy tính lên => Nhấn tổ hợp phím Alt+F11 (hoặc Alt+Fn+F11) để vào cửa sổ VBA

Trong cửa sổ VBA vào Insert => Module và copy đoạn code dưới đây vào phần soạn thảo code trong Module.

Thay đoạn "xxxxxxxxxxxxxxxxxxxxxxxxxxx" trong code bằng chuỗi khóa lấy ở bước 2 (Lưu ý: Chuỗi này phải đặt trong dấu nháy kép)

Sub GetDataGGsheet()

    Dim qry As QueryTable, ustr As String, kstr As String

    kstr = "xxxxxxxxxxxxxxxxxxxxxxxxxxx"

    If ActiveSheet.QueryTables.Count > 0 Then ActiveSheet.QueryTables(1).Delete

    ActiveSheet.Cells.Clear

    ustr = "https://spreadsheets.google.com/tq?tqx=out:html&key=" & kstr

    Set qry = ActiveSheet.QueryTables.Add(Connection:="URL;" & ustr, Destination:=Range("$A$1"))

    With qry

        .WebSelectionType = xlAllTables

        .WebFormatting = xlWebFormattingNone

        .Refresh

    End With

End Sub

Bước 4: Chạy VBA để lấy dữ liệu

Nhấn phím F5 và chờ trong giây lát để lấy dữ liệu về File Excel. Trường hợp có xuất hiện thông báo lỗi thì cần kiểm tra lại Bước 1, Bước 2 xem đã chia sẻ file hay lấy đúng mã khóa chưa

Liên hệ tư vấn khóa học Excel cho người đi làm & đặt hàng đào tạo tại doanh nghiệp

{Đt Zalo} - 038 696 1334


 Trong file excel có nhiều sheet ẩn, bằng phương pháp thủ công thì người dùng sẽ phải Unhide từng sheet ẩn đó, như vậy sẽ mất nhiều thời gian.

Bài viết dưới đây sẽ chia sẻ code VBA để unhide tất cả các sheet ẩn. 

Bước 1: Mở File Excel cần bỏ ẩn các sheet và nhấn Alt+F11 (hoặc Alt+Fn+F11) để vào cửa sổ VBA => Trong cửa sổ VBA chọn Insert => Module

Bước 2: Copy đoạn code dưới dây vào cửa sổ Module

Sub UnHidenSheet()

    Dim sh As Worksheet, Msh As Worksheet

    Set Msh = ActiveSheet

    For Each sh In ThisWorkbook.Sheets

        If sh.Name <> Main_sheet Then sh.Visible = xlSheetVisible

    Next

    Msh.Select

End Sub

Bước 3: Chạy code bằng cách nhấn nút Run (màu xanh nhỏ) trên thanh công cụ của cửa sổ VBA

Liên hệ tư vấn khóa học Excel cho người đi làm hoặc đặt hàng đào tạo tại doanh nghiệp

{Đt+Zalo} - 038 696 1334


 Trong quá trình nhập liệu hoặc tiếp nhận số liệu từ người khác thì thường có phát sinh những dòng trống ở giữa các khối số liệu. Điều này sẽ gây khá nhiều bất tiện khi dùng các phím tắt, filter và sort thiếu giá trị, làm công thức,...

Bài viết dưới đây sẽ hướng dẫn dùng VBA để thực hiện xóa dòng trống trong khối dữ liệu. Các bước thực hiện như sau:

Bước 1: Mở sheet Excel cần xóa dòng trống và nhấn tổ hợp phím Alt+F11 (hoặc Alt+Fn+F11) để vào môi trường VBA => Vào menu Insert chọn Module

Bước 2: Copy đoạn code dưới đây vào cửa sổ Module

Sub ClearBlankRow()

    Dim Cot_kt As String

    Dim i&, Dong_dau&

    Dong_dau = 4

    Cot_kt = "A"

    For i = Range(Cot_kt & Rows.Count).End(xlUp).Row To Dong_dau Step -1

        If Range(Cot_kt & i).Value = "" Then Range(Cot_kt & i).EntireRow.Delete

    Next

End Sub

Bước 3: Sửa thông tin trong code

Dong_dau=4 thì dòng bắt đầu là dòng nào thì thay số 4 bằng dòng bắt đầu tương ứng của sheet

Cot_kt = "A" cột kiểm tra xem dòng đó có bị trống hay ko. Thay "A" bằng cột kiểm tra theo sheet. Nếu ô nào trong cột A bị trống thì Code sẽ thực hiện xóa cả dòng đó

Bước 4: Chạy code bằng cách nhấn nút Run (màu xanh nhỏ trên thanh công cụ VBA)

Liên hệ tư vấn khóa học Excel cho người đi làm hoặc đặt hàng đào tạo tại doanh nghiệp

{Đt+Zalo} - 038 696 1334


 Trong xử lý dữ liệu thì nhiều trường hợp cần chèn nhân bản thêm sau mỗi dòng dữ liệu. Bài viết dưới đây sẽ hướng dẫn sử dụng code mẫu VBA để chèn nhân bản thêm dòng dữ liệu tự động như sau:

Bước 1: Mở sheet Excel cần chèn nhân bản số dòng và nhấn tổ hợp phím Alt+F11 (hoặc Alt+Fn+F11) để vào môi trường VBA=> Vào Insert chọn Module

Bước 2: Copy đoạn code dưới đây vào cửa sổ Module

Sub InsertAndCopyRow()

    Dim Cot_kt As String

    Dim i&, Dong_dau&, So_chen&

    Dong_dau = 5

    Cot_kt = "A"

    So_chen = 10

    For i = Range(Cot_kt & Rows.Count).End(xlUp).Row - 1 To Dong_dau Step -1

        If Range(Cot_kt & i).Value <> "" Then

            Range(Cot_kt & i + 1 & ":" & Cot_kt & i + So_chen).EntireRow.Insert

            Range(Cot_kt & i + 1 & ":" & Cot_kt & i + So_chen).EntireRow.Value = Range(Cot_kt & i).EntireRow.Value

        End If

    Next

End Sub

Bước 3: Sửa thông tin trong code

- Cot_kt="A". Mặc định là cột A là làm căn cứ để insert thêm dòng. Cột này bắt buộc phải có dữ liệu nhập trong đó. Nếu bảng tính căn cứ vào cột khác (ví dụ: C) thì người dùng thay "A" bằng "C"

- So_chen=10: Thay 10 bằng số dòng muốn chèn và nhân bản phía dưới mỗi dòng

Bước 4: Chạy code bằng cách nhấn vào nút Run (màu xanh nhỏ trên thanh công cụ)

Liên hệ tư vấn khóa học Excel cho người đi làm hoặc đặt hàng đào tạo tại doanh nghiệp

{Đt+Zalo} - 038 696 1334


 Trong xử lý dữ liệu thì nhiều trường hợp cần chèn thêm những dòng trống sau mỗi dòng dữ liệu. Bài viết dưới đây sẽ hướng dẫn sử dụng code mẫu VBA để chèn dòng trống tự động như sau:

Bước 1: Mở sheet Excel cần chèn thêm dòng trống và nhấn tổ hợp phím Alt+F11 (hoặc Alt+Fn+F11) để vào môi trường VBA=> Vào Insert chọn Module

Bước 2: Copy đoạn code dưới đây vào cửa sổ Module

Sub InsertBlankRow()

    Dim Cot_kt As String

    Dim i&, Dong_dau&, So_chen&

    Dong_dau = 5

    Cot_kt = "A"

    So_chen = 10

    For i = Range(Cot_kt & Rows.Count).End(xlUp).Row - 1 To Dong_dau Step -1

        If Range(Cot_kt & i).Value <> "" Then Range(Cot_kt & i + 1 & ":" & Cot_kt & i + So_chen).EntireRow.Insert

    Next

End Sub

Bước 3: Sửa thông tin trong code

- Cot_kt="A". Mặc định là cột A là làm căn cứ để insert thêm dòng. Cột này bắt buộc phải có dữ liệu nhập trong đó. Nếu bảng tính căn cứ vào cột khác (ví dụ: C) thì người dùng thay "A" bằng "C"

- So_chen=10: Thay 10 bằng số dòng trống muốn chèn phía dưới mỗi dòng

Bước 4: Chạy code bằng cách nhấn vào nút Run (màu xanh nhỏ trên thanh công cụ)

Liên hệ tư vấn khóa học Excel cho người đi làm hoặc đặt hàng đào tạo tại doanh nghiệp

{Đt+Zalo} - 038 696 1334



 Trong thực tế sử dụng bảng tính, người dùng thường đặt mật khẩu worksheet  đảm bảo tính toàn vẹn của dữ liệu, công thức,....nhưng sau đó có thể bị quên mật khẩu. Bài viết này sẽ hướng dẫn cách gỡ Password bảo vệ worksheet bằng VBA như sau:

Bước 1: Mở file Excel có sheet bị quên pass => Nhấn tổ hợp phím Alt+F11 (hoặc Alt+Fn+F11) để vào môi trường VBA  => Vào Insert chọn Module

Bước 2: Copy đoạn code dưới đây và paste vào cửa sổ code của Module

Sub BreakPassword()

Dim i As Integer, j As Integer, k As Integer

Dim l As Integer, m As Integer, n As Integer

Dim i1 As Integer, i2 As Integer, i3 As Integer

Dim i4 As Integer, i5 As Integer, i6 As Integer

On Error Resume Next

For i = 65 To 66: For j = 65 To 66: For k = 65 To 66

For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66

For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66

For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126

ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

If ActiveSheet.ProtectContents = False Then

Exit Sub

End If

Next: Next: Next: Next: Next: Next

Next: Next: Next: Next: Next: Next

End Sub

Bước 3: Trở lại môi trường Excel, vào click chuột vào sheet có Password protect sheet => rồi trở lại cửa sổ VBA và bấm vào biểu tượng Run (Màu xanh nhỏ) => Kết quả là sheet đó đã được gỡ mật khẩu. Lại tiếp tục đặt con chuột sang sheet tiêp theo có pass và lại chạy Run....=> Có bao nhiêu sheet có pass thì chạy Run bấy nhiêu lần

Nguồn code tham khảo: Instructable

Liên hệ tư vấn khóa học Excel cho người đi làm hoặc đặt hàng đào tạo tại doanh nghiệp

{Đt+Zalo} - 038 696 1334



Excel Thỉnh Vũ. Được tạo bởi Blogger.