2015-09-23 78 views
0

我有一個功能,我在CSV文件作爲電子郵件附件。我必須將該CSV文件導入Excel文件,並在該Excel文件上生成SSRS報告。我寫了一個宏將數據從CSV導入Excel。但是我希望Excel文件不用打開就可以填充CSV數據,因爲每次打開Excel文件都不方便獲取刷新的SSRS報告。我寫了VBS代碼也運行宏,但它沒有填充我的Excel文件。運行Excel宏而不打開它

我的宏:

Sub getDataImported() 
    Sheet11.Cells(1, 1).Resize(1, 3).EntireColumn.ClearContents 
    MsgBox "Inside Macro" 
    With Sheet11.QueryTables.Add(Connection:= _ 
     "TEXT;D:\Sample SSRS\power View\AlertHistory.csv", Destination:=Range("$A$1") _ 
     ) 
     .Name = "AlertHistory" 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .TextFilePromptOnRefresh = False 
     .TextFilePlatform = 437 
     .TextFileStartRow = 1 
     .TextFileParseType = xlDelimited 
     .TextFileTextQualifier = xlTextQualifierDoubleQuote 
     .TextFileConsecutiveDelimiter = False 
     .TextFileTabDelimiter = False 
     .TextFileSemicolonDelimiter = False 
     .TextFileCommaDelimiter = True 
     .TextFileSpaceDelimiter = False 
     .TextFileColumnDataTypes = Array(1, 1, 1) 
     .TextFileTrailingMinusNumbers = True 
     .Refresh BackgroundQuery:=False 
    End With 
End Sub 

我的VBS:

Set objExcel = CreateObject("Excel.Application") 
objExcel.Application.Run "'D:\Sample SSRS\power View\AlertHistory.xlsm'!Module1.getDataImported" 
objExcel.DisplayAlerts = False 
objExcel.Application.Quit 
Set objExcel = Nothing 

回答

0

你怎麼在代碼中定義 「Sheet11」。這應該會導致編譯錯誤,因爲它沒有被聲明?我認爲,如果你手動嘗試你的代碼,它不會運行? 如果您的工作表名稱是「Sheet11」,則不是使用此工作簿工作表(「Sheet11」)而是「Sheet11」。

0

如果Sheet11是其中一張工作表的CodeName,則他使用Sheet11的方式有效。我假設宏getDataImported本身工作正常,它是失敗的.vbs文件?您的模塊Module1的名稱是否確定您的.vbs文件是以擴展名.vbs保存的?執行.vbs文件時,您的「Inside Macro」msgbox是否顯示?

我是你從(wellsr.com)得到這個網站的作者,所以我很樂意提供幫助。 Idk爲什麼鏈接到original source頁面被編輯出來。

+0

謝謝wellsr。我認爲這不起作用,因爲它沒有保存數據。我修改了我的.vbs代碼,如下所示,現在它工作正常。 Dim objXLWb Set objExcel = CreateObject(「Excel.Application」) Set objXLWb = objExcel.Workbooks.Open(「D:\ Sample SSRS \ power View \ AlertHistory.xlsm」) objExcel.Application.Run「'D: \示例SSRS \ power View \ AlertHistory.xlsm'!Module1.getDataImported「 objExcel.DisplayAlerts = False objXLWb.Save objExcel.Application.Quit Set objExcel = Nothing' – Coder157

相關問題