2010-08-06 78 views
3

我從MS Query中創建的查詢中導入數據。 可以說,查詢編輯器中的列按A,B,C,D,E,F順序排列。 一旦我保存查詢,返回數據到Excel,導入的數據有一個新的列順序Excel導入SQL數據,但一旦導入就更改1列的順序

A,B,C,F,D,E - 注意F列移到D處。

有關如何解決此問題的任何想法?

謝謝你們。假設變量正確定義,而忽視了代碼試圖做的,如果你願意,在保留部分沒有工作

For Each wks In ThisWorkbook.Worksheets 

    Set qt = wks.QueryTables(1) 
    qt.PreserveColumnInfo = True 
    qt.PreserveFormatting = True 


     If wks.Name <> "Master" And wks.Name <> "Parameters" Then 


     wks.Range("A2:A1000").EntireRow.Copy Destination:=Worksheets("Master").Range("A65536").End(xlUp).Offset(1, 0) 




     End If 
    Next wks 

回答

4

有叫PreserveColumnInfoPreserveFormattingQueryTable對象,這將有助於你出的兩個屬性。 (還有AdjustColumnWidth,但我不確定是否需要擔心這一點)。你應該能夠使用類似的代碼如下,以幫助保護列的信息:

Sub PreserveQueryTable() 
    Dim ws As Worksheet 
    Dim qt As QueryTable 

    Set ws = ActiveSheet 

    Set qt = ws.QueryTables(0) ' <== I am not sure if this should be a  ' 
           '  0 or a 1. I think it is a 0.   ' 

    qt.PreserveColumnInfo = True 
    qt.PreserveFormatting = True 

End Sub 
+0

哈哈大家好本,有0,我得到的對象定義的錯誤,用1我拿到劇本超出範圍的錯誤...有什麼想法嗎?謝謝! – EKet 2010-08-06 19:01:29

+0

@Ehsan你知道哪一行會拋出錯誤嗎?如果您在使用1時遇到腳本超出範圍錯誤,則可能使用0的正確數字。請確保在包含數據的工作表上使用此數字。我希望我能記得還有什麼要檢查,但沒有數據庫連接的Excel工作表,我不知道還有什麼要看。 – 2010-08-06 19:11:05

+0

它將它拋出Set qt = ws.QueryTables(0)...我正在爲每個循環做一個。我提供了代碼。謝謝本 – EKet 2010-08-06 19:52:02