Excel Interop форматирование - PullRequest
       19

Excel Interop форматирование

0 голосов
/ 15 февраля 2012

Использование Access 2007 vba для адресации книги Excel 2007 ("WB") ....

Эта подпрограмма добавляет рабочую таблицу в существующую и открытую рабочую книгу Excel, а затем добавляет строки набора записей на лист. Пока это довольно грязно, я настраиваю его для создания нескольких листов, каждый из которых смотрит на одни и те же данные по-разному.

Мне удалось опубликовать строки, но теперь я хочу отформатировать их немного лучше, чтобы не запутывать незнающих целевых пользователей в Excel. Я хочу изменить цвет ячеек заголовка и установить для столбцов значение "autofit".

Кто-нибудь может помочь?

Sub SummarySheets(WB As Excel.WorkBook, TempTableName As String)
Const SummarySheetName As String = "Timesheet Summaries"
Const SummaryQueryName As String = "qrySATempSummarybyWO"
Const SummaryTitleRow As Integer = 1


Dim xlSumSht As Excel.Worksheet
If SheetExists(WB, SummarySheetName) Then
    WB.Sheets(SummarySheetName).Delete
End If
Set xlSumSht = WB.Sheets.Add(After:=WB.Sheets(WB.Sheets.count))
xlSumSht.NAME = SummarySheetName
xlSumSht.Activate

Dim intRow As Integer
Dim intCol As Integer
Dim intStartRow As Integer
Dim strSQL As String
Dim strQry As String

Dim rstSummary As DAO.Recordset

strQry = CurrentDbC.QueryDefs(SummaryQueryName).SQL
strSQL = Replace(strQry, "tblStaffAugTrans", "[" & TempTableName & "]")

Set rstSummary = CurrentDbC.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges + dbFailOnError)
If rstSummary.EOF = False Then
    intRow = SummaryTitleRow
    For intCol = 1 To rstSummary.Fields.count
        xlSumSht.Cells(intRow, intCol).Value = rstSummary.Fields(intCol - 1).NAME
    Next intCol
End If
While rstSummary.EOF = False
    intRow = intRow + 1
    For intCol = 1 To rstSummary.Fields.count
        xlSumSht.Cells(intRow, intCol).Value = rstSummary.Fields(intCol - 1).Value
    Next intCol
    rstSummary.MoveNext
Wend
For intCol = 1 To rstSummary.Fields.count
    'xlSumSht.Columns.EntireColumn(, intCol).AutoFit
Next intCol

rstSummary.Close

End Sub

1 Ответ

1 голос
/ 15 февраля 2012

Нечто подобное должно делать эту работу.Это просто установит заголовки на желтый цвет интерьера и автоматически подгонит столбцы.

With xlSumSht.Range(Cells(SummaryTitleRow, 1), Cells(SummaryTitleRow, rstSummary.Fields.Count))
    .Interior.Color = vbYellow
    .EntireColumn.AutoFit
End With
...