2012-12-04 65 views
12

我正在嘗試將Excel 2013的「查詢加載項」中的新功能Spreadsheet Compare合併到VBA腳本中。如何腳本Excel 2013的電子表格比較?

該計劃是讓一個宏自動化具有預定義名稱的兩個電子表格之間的比較,並將所有差異導出爲新的電子表格。

沒有成功,迄今爲止。

這裏是我試過到目前爲止:

  1. 通常情況下,學習如何自動執行某些Excel功能,我用錄製宏。
  2. 如果失敗了,我查看可添加引用的列表,看看我是否缺少明顯的東西。

這兩種情況在這種情況下都失敗了。沒有代碼與電子表格比較相關,當我錄製一個宏時(只有外圍的東西像細胞選擇出現)。沒有任何可添加引用看起來像電子表格比較。

那麼,如何從VBA腳本Excel的2013電子表格比較?

+2

+1很好的問題。我會在週末看到這個,當我回到家,並獲得x13的訪問權限。 – brettdj

+1

[我刪除了我以前的評論,因爲它是胡言亂語...] 該方法調用將是可用的,因爲它是一個COM插件,所以如果一切都失敗了,你可以使用visual studio查看它暴露的方法,然後自動化它從你的vba像一個FileSystemObject。 如果你拋出了正確的XML轉換,那麼如果沒有我已經讀過的關於excel插件的東西,將不可能重現。 –

+0

這也是我用來做自動化的兩種方法。你有什麼實際問題?錄製宏時沒有出現代碼?代碼出現了,但是太複雜了?在參考中找不到COM添加項? –

回答

1

你不能。

VBA不包含在這種情況下添加的內容。

電子表格比較是被微軟吞噬的第三方插件。

如果你需要腳本比較,你可以找到那些每個單元格,每行......網絡上的東西。

3

我打開similar question來自動執行.NET應用程序中的電子表格比較工具,但是我還沒有發現任何其他方式,而不是從命令行執行它。

您可以從您的VBA加載項中執行此操作。您只需要找到可執行文件SPREADSHEETCOMPARE.EXE(通常位於C:\ Program Files(x86)\ Microsoft Office \ Office15 \ DCF)中,並使用指令文件作爲輸入參數在命令行中執行。

該指令文件必須是一個ASCII文件,其中兩個Excel文件路徑要在不同的行中進行比較。

1
  1. 創建runCompare.cmd文件:

    REM Execute from command line spreadsheetcompare.exe 
    REM 
    cd C:\Program Files (x86)\Microsoft Office 2013\Office15\DCF 
    spreadsheetcompare.exe C:\reportNames.txt 
    
  2. 在C:\ reportNames.txt,保存在同一行,你要比較的.xlsx文件:

    C:\fileA.xlsx C:\fileB.xlsx 
    
  3. 執行runCompare.cmd。