폴더의 여러 Excel 파일을 처리하여 조건부 서식을 추가하고 페이지 레이아웃 및 인쇄 설정을 조정하고 매크로를 추가하여 페이지를 조정하는 C#을 사용하여 Windows 서비스를 개발했습니다 휴식. 내가 가지고있는 문제는 파일을 열 때 매크로를 자동으로 실행하려면 Workbook_Open 루틴의 ThisWorkbook 개체에 코드 줄을 추가하는 것입니다. WB 이전 코드에서 인스턴스화 통합 문서 객체가ThisWorkbook에 매크로를 추가하는 방법 C# Excel Interop를 사용하여 Workbook_Open을 엽니 다.
wb.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule);
라인에서
using Excel = Microsoft.Office.Interop.Excel;
using VBIDE = Microsoft.Vbe.Interop;
VBIDE.VBComponent oModule;
String sCode;
oModule = wb.VBProject.VBComponents.Add(VBIDE.vbext_ComponentType.vbext_ct_StdModule);
sCode =
@"Sub FixPageBreaks()
On Error GoTo ErrMsg
Dim wb As Workbook
Set wb = ActiveWorkbook
Dim sheet As Worksheet
Set sheet = wb.Worksheets(1)
Dim vBreaks As VPageBreaks
Set vBreaks = sheet.VPageBreaks
If vBreaks.Count > 0 Then
Dim lastCol As Integer
lastCol = ActiveSheet.Cells.Find(What:=""*"", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False, SearchFormat:=False).Column
Dim lCount As Integer
lCount = 1
Dim brkCol As Integer
Dim brkRng As Range
Dim iReply As VbMsgBoxResult
Do
If vBreaks(lCount).Location.Column = lastCol Then
brkCol = vBreaks(lCount).Location.Column + 1
Else
brkCol = vBreaks(lCount).Location.Column - 1
End If
Set brkRng = Range(sheet.Cells(1, brkCol), sheet.Cells(1, brkCol))
If brkCol Mod 2 = 1 And lastCol > brkCol Then
Set vBreaks(lCount).Location = brkRng
ElseIf brkCol Mod 2 = 1 Then
vBreaks(lCount).DragOff Direction:=xlToRight, RegionIndex:=1
End If
lCount = lCount + 1
Loop While lCount <= vBreaks.Count
sheet.PrintPreview
End If
Exit Sub
ErrMsg:
MsgBox Err.Description
End Sub";
oModule.CodeModule.AddFromString(sCode);
다음과 같이 내가 Module1 위해 매크로를 추가하기 위해 사용하고 코드입니다. 그러나이 모든 작동하지만 vbext_ComponentType 열거 형에 대한 많은 설명서를 찾을 수 없어 통합 문서의 ThisWorkbook 개체를 나타내는 것이 무엇인지 판별하고 통합 문서에 ThisWorkbook 개체를 추가하는 방법을 결정합니다. 또한 Excel 문서에서 매크로로 페이지 나누기와 동일한 작업을 수행하는 C# 코드를 찾는 것이 좋을 것입니다. 처리의 나머지 부분과 같이 C#에서 수행하지 않는 유일한 이유는 작동하도록 만들 수 없다는 것입니다. 도움이된다면 도움이 될 것입니다.
몇 가지 설명이 도움이 될 수 있습니다. –