2012-02-15 83 views
0

使用Access 2007 VBA處理Excel 2007工作簿(「WB」)......Excel的互操作格式化

這個程序增加了一個工作表,以現有的和開放的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 

末次

回答

1

像這樣的東西應該做的工作。這將簡單地將標題設置爲具有黃色內部顏​​色並且將自動適合列。

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

是的,我在一些實驗後發現它。我用了幾乎完全一樣的東西。它也有助於在測試表上記錄一個宏。我感謝您的幫助。謝謝。 – 2012-02-15 19:21:07