thảo luận Hỗ trợ miễn phí viết macro VBA trong Outlook cho anh em

Theo ý mình hiểu thì, có phải thím muốn áp dụng kích thước dài rộng (Size: Width * Height), tỷ lệ crop như crop top, crop bottom, crop left và crop right của hình làm mẫu cho toàn bộ hình còn lại đúng không.
Đúng rồi đó bạn. Nếu dùng 1 thông số fix cố định thì mình chỉnh được. Cái khó là thông số thay đổi đó b.
 
Đúng rồi đó bạn. Nếu dùng 1 thông số fix cố định thì mình chỉnh được. Cái khó là thông số thay đổi đó b.
Vậy thì mình có ý tưởng này:
  1. Đầu tiên tạo hai macro, gán lần lượt vào hai nút bấm ở ngoài sheet, nút bấm đầu tiên dùng để lấy thông tin của hình sau khi thím đã chỉnh sửa kích thước và crop, thông tin sẽ được lưu trữ tạm thời dưới dạng tập tin văn bản ở thư mục tạm %TEMP%.
  2. Macro còn lại thì có nhiệm vụ đọc thông tin từ tập tin văn bản và áp dụng cho những hình còn lại, sau khi xong việc thì xóa tập tin văn bản (vì không còn tác dụng gì nữa).
Không biết ý thím thế nào.
 
Thím khởi động lại Outlook sau khi thêm khóa registry chưa? Làm xong thì phải khởi động lại Outlook thì mới có tác dụng nhé.
Mình làm rồi , hình như do outlook của mình là echange không phải imap hay pop3 thì phải
 
Mình làm rồi , hình như do outlook của mình là echange không phải imap hay pop3 thì phải
À vậy cái này khó, nếu là Exchange thì dùng khóa registry để tắt cái cảnh báo thì không được rồi do Outlook lấy thông tin dung lượng tệp đính kèm tối đa cho phép từ chính máy chủ Exchange.
Nếu vậy thì cái add-in kia phải sửa lại rồi.
 
À vậy cái này khó, nếu là Exchange thì dùng khóa registry để tắt cái cảnh báo thì không được rồi do Outlook lấy thông tin dung lượng tệp đính kèm tối đa cho phép từ chính máy chủ Exchange.
Nếu vậy thì cái add-in kia phải sửa lại rồi.
nhờ thím giúp mình nhé
 
Vậy thì mình có ý tưởng này:
  1. Đầu tiên tạo hai macro, gán lần lượt vào hai nút bấm ở ngoài sheet, nút bấm đầu tiên dùng để lấy thông tin của hình sau khi thím đã chỉnh sửa kích thước và crop, thông tin sẽ được lưu trữ tạm thời dưới dạng tập tin văn bản ở thư mục tạm %TEMP%.
  2. Macro còn lại thì có nhiệm vụ đọc thông tin từ tập tin văn bản và áp dụng cho những hình còn lại, sau khi xong việc thì xóa tập tin văn bản (vì không còn tác dụng gì nữa).
Không biết ý thím thế nào.
Ừ nhỉ sao mình ko nghĩ ra nhỉ.
"thông tin sẽ được lưu trữ tạm thời dưới dạng tập tin văn bản ở thư mục tạm %TEMP%." => Cái này mình chưa biết cách nào để tao ra được đó.
Mình sẽ tìm hiểu theo hướng tìm hiểu tạo 1 biến toàn cục. Phím 1 mình sẽ thu thập thông tin vào biến toàn cục. Phím 2 sẽ sử dụng dữ liệu từ biến toàn cục để qua tấm hình 2 :D .
Thì tạm thời vậy nhưng thấy còn có gì đó nó thiếu thiếu b ơi =((
 
Ừ nhỉ sao mình ko nghĩ ra nhỉ.
"thông tin sẽ được lưu trữ tạm thời dưới dạng tập tin văn bản ở thư mục tạm %TEMP%." => Cái này mình chưa biết cách nào để tao ra được đó.
Mình sẽ tìm hiểu theo hướng tìm hiểu tạo 1 biến toàn cục. Phím 1 mình sẽ thu thập thông tin vào biến toàn cục. Phím 2 sẽ sử dụng dữ liệu từ biến toàn cục để qua tấm hình 2 :D .
Thì tạm thời vậy nhưng thấy còn có gì đó nó thiếu thiếu b ơi =((
Thím xem thử macro này xem sao nhé:
Code:
Option Explicit

Public Sub GetSelectedShapeInfo()
    Dim objShapeRange As Excel.ShapeRange
    Dim objShape As Excel.Shape
    Dim objFSO As Object
    Dim objTextFile As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    On Error Resume Next
    Set objShapeRange = Application.Selection.ShapeRange
    If objShapeRange Is Nothing Then
        VBA.MsgBox "You did not select any shapes. Please try again.", vbExclamation, "Error: No Shape Selected"
        Exit Sub
    End If
    If objShapeRange.Count > 1 Then
        VBA.MsgBox "You need to select only one shape.", vbExclamation, "Error: Multiple Shapes Selected"
        Exit Sub
    End If
    Set objShape = Application.Selection.ShapeRange(1)
    Set objTextFile = objFSO.CreateTextFile(Filename:=Environ$("TEMP") & "\ImageSizingCroppingInfo.tmp")
    With objShape
        objTextFile.WriteLine CStr(.Width)
        objTextFile.WriteLine CStr(.Height)
        With .PictureFormat
            objTextFile.WriteLine CStr(.CropTop)
            objTextFile.WriteLine CStr(.CropBottom)
            objTextFile.WriteLine CStr(.CropLeft)
            objTextFile.WriteLine CStr(.CropRight)
        End With
    End With
    objTextFile.Close
    VBA.MsgBox "Information on " & objShape.Name & " has been saved. Now you can apply it to multiple shapes of your choice.", vbInformation, "Shape Information Saved Successfully"
    Set objShape = Nothing
    Set objFSO = Nothing
    Set objTextFile = Nothing
End Sub
 
Last edited:
Thím xem thử macro này xem sao nhé:
Code:
Option Explicit

Public Sub GetSelectedShapeInfo()
    Dim objShapeRange As Excel.ShapeRange
    Dim objShape As Excel.Shape
    Dim objFSO As Object
    Dim objTextFile As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    On Error Resume Next
    Set objShapeRange = Application.Selection.ShapeRange
    If objShapeRange Is Nothing Then
        VBA.MsgBox "You did not select any shapes. Please try again.", vbExclamation, "Error: No Shape Selected"
        Exit Sub
    End If
    If objShapeRange.Count > 1 Then
        VBA.MsgBox "You need to select only one shape.", vbExclamation, "Error: Multiple Shapes Selected"
        Exit Sub
    End If
    Set objShape = Application.Selection.ShapeRange(1)
    Set objTextFile = objFSO.CreateTextFile(Filename:=Environ$("TEMP") & "\ImageSizingCroppingInfo.tmp")
    With objShape
        objTextFile.WriteLine CStr(.Width)
        objTextFile.WriteLine CStr(.Height)
        With .PictureFormat
            objTextFile.WriteLine CStr(.CropTop)
            objTextFile.WriteLine CStr(.CropBottom)
            objTextFile.WriteLine CStr(.CropLeft)
            objTextFile.WriteLine CStr(.CropRight)
        End With
    End With
    objTextFile.Close
    VBA.MsgBox "Information on " & objShape.Name & " has been saved. Now you can it apply to multiple shapes of your choice.", vbInformation, "Shape Information Saved Successfully"
    Set objShape = Nothing
    Set objFSO = Nothing
    Set objTextFile = Nothing
End Sub
Mà b, mình cũng mới tập tãnh VBA đó. Bạn có đọc cuốn sách hay bài viết nào về VBA này ko b ? chỉ mình với.
 
nhờ thím giúp mình nhé
"Lách luật" kiểu này nhé thím :D
1658882382140.png
 

Attachments

  • CreateNewEmail-UploadAttachmentsToGoogleDriv.zip
    1.8 MB · Views: 35
mình chưa hiểu ý thím ơi
Ý mình là add-in đó chỉ áp dụng khi tạo email mới, khi thím muốn tải tệp đính kèm lên Google Drive và get link đưa vào email mới, thím chỉ cần chọn nút bấm trên ribbon như trong hình.
 
Ừ nhỉ sao mình ko nghĩ ra nhỉ.
"thông tin sẽ được lưu trữ tạm thời dưới dạng tập tin văn bản ở thư mục tạm %TEMP%." => Cái này mình chưa biết cách nào để tao ra được đó.
Mình sẽ tìm hiểu theo hướng tìm hiểu tạo 1 biến toàn cục. Phím 1 mình sẽ thu thập thông tin vào biến toàn cục. Phím 2 sẽ sử dụng dữ liệu từ biến toàn cục để qua tấm hình 2 :D .
Thì tạm thời vậy nhưng thấy còn có gì đó nó thiếu thiếu b ơi =((
Mình có viết sẵn hai macro cho thím, thím xem có phù hợp không nhé.
Video demo:
 

Attachments

  • ExcelVBA-ImageResizingCropping.zip
    144.9 KB · Views: 70
tiện thớt cho em hỏi là em vừa mới việt 1 hàm, làm thế nào để các file khác cũng dùng đc hàm đấy mà không phải cop lệnh sang với ạ, và các máy tính khác cũng dùng đc hàm đấy ạ
 
tiện thớt cho em hỏi là em vừa mới việt 1 hàm, làm thế nào để các file khác cũng dùng đc hàm đấy mà không phải cop lệnh sang với ạ, và các máy tính khác cũng dùng đc hàm đấy ạ
Trong Excel, thím có thể tạo add-in .xlam để phân phối macro cho người khác sử dụng.
1659348422304.png
 
em cảm ơn ạ, cho em hỏi câu nữa là muốn tạo chú thích cho hàm như những hàm mặc định để người khác sử dụng dễ hơn thì làm thế nào thế thím
Ý thím có phải giống như này không?
1659452055588.png

Thật ra, Excel không hỗ trợ hiển thị chú thích (screen tip) cho những hàm tự tạo (user-defined functions) viết bằng VBA. Nếu thím có kiến thức về lập trình VB.Net hoặc C# nền tảng .NET thì thím có thể chuyển đổi những hàm đã viết trong VBA sang VB.Net hoặc C#, sau đó tạo và hiển thị chú thích của những hàm này bằng ExcelDNA (thật ra có thể viết luôn add-in .xll bằng chính thằng này, cái này xin phép không đào sâu hơn vì mình không có kinh nghiệm).
Vd: Khi viết bằng C#
1659454358664.png


Hiển thị trên Excel:
1659454416737.png

Lưu ý: Không thể tích hợp ExcelDNA vào add-in VSTO.
 
Back
Top