[英]Excel macro doesn't execute correctly when opening file from c#
我有一個宏,可以根據條件格式化單元格。 這是代碼:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Set MyPlage = Sheets("Report").Range("E13:E1500")
For Each Cell In MyPlage
If Cell.Value = "L" Then
Cell.Borders.ColorIndex = 1
Cell.Font.ColorIndex = 3
ElseIf Cell.Value = "K" Then
Cell.Borders.ColorIndex = 1
Cell.Font.ColorIndex = 44
ElseIf Cell.Value = "J" Then
Cell.Borders.ColorIndex = 1
Cell.Font.ColorIndex = 10
ElseIf Cell.Value = "ü" Then
Cell.Borders.ColorIndex = 1
ElseIf Cell.Value = "" And Cell.Offset(0, 1).Value <> "" Then
Cell.Borders.ColorIndex = 1
Else
Cell.Borders.ColorIndex = 2
End If
Next
宏在保存工作簿之前執行。 它可以從excel完美地工作。
我的問題是我有一個C#應用程序,可以打開此excel文件並用數據更新它。
當我保存文件(從代碼)並打開文件(從桌面或任何地方)時,我看到宏已運行,但某些單元格的顏色(格式)不正確。
例如,如果單元格值為“ OK”,則該單元格的宏格式應為“紅色”。 當我從Excel保存工作簿時,所有具有“確定”值的單元格均為紅色。 大!
但是,當我運行打開文件,進行更改並保存的應用程序時,某些“確定”單元格為“紅色”(很好!),而另一些為“綠色”(不好!)。
有人有主意嗎?
謝謝
一個可能值得嘗試的建議:將VBA代碼移到新例程中,例如
Public Sub UpdateFormats
Set MyPlage = Sheets("Report").Range("E13:E1500")
For Each Cell In MyPlage
....
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
call UpdateFormats
End Sub
然后在保存和關閉工作表之前從C#中顯式調用該例程。 您也可以從BeforeSave處理程序中調用同一例程。
這可能使您可以觀察到仍在打開床單時調用的例程-與在關閉床單后必須打開床單相比有所改善。
不,我無法從代碼中調用宏,因為該應用程序是將MPP任務報告給XLS文件的應用程序,並且XLS文件格式可以根據使用它的人而改變。 Somethimes XLS文件沒有宏。
我找到了答案。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Set MyPlage = Sheets("Report").Range("E13:E1500")
For Each Cell In MyPlage
If Cell.Value = "L" Then
Cell.Borders.ColorIndex = 1
Cell.Font.ColorIndex = 3
ElseIf Cell.Value = "K" Then
Cell.Borders.ColorIndex = 1
Cell.Font.ColorIndex = 44
ElseIf Cell.Value = "J" Then
Cell.Borders.ColorIndex = 1
Cell.Font.ColorIndex = 10
ElseIf Cell.Value = "ü" Then
Cell.Borders.ColorIndex = 1
Cell.Font.ColorIndex = 1
ElseIf Cell.Value = "" And Cell.Offset(0, 1).Value <> "" Then
Cell.Borders.ColorIndex = 1
Cell.Font.ColorIndex = 1
Else
Cell.Borders.ColorIndex = 2
End If
Next
End Sub使用此代碼,即使對於我未指定值的黑色字體,格式每次也會更改。 這就是為什么當值更改時,對於應該具有黑色字體的單元格,之前帶有綠色字體的單元格保持為grenn之后的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.