2013-05-09 102 views
0

我想寫一個SAS程序來查找並通過DDE在Excel文件中進行替換。具體來說,我試圖在標題行中搜索字符串之間的空格(即「」),並將它們替換爲無空格(即「」)。SAS - 通過DDE在Excel文件中執行查找和替換

例如,如果我有一個單元格包含「測試名稱」我想要做一個查找並替換,使其「TestName」。

這是我有:

options noxwait noxsync; 

/* Open Excel */ 
x '"C:\Program Files (x86)\Microsoft Office\Office14\excel.exe"'; 
filename cmds dde 'excel|system'; 
data _null_; 
    x=sleep(5); 
run; 

/* Open File and Manipulate*/ 
data _null_; 
    file cmds; 
    put '[open("C:\filename.xls")]'; 
    put '[select("R1")]'; 
    put '[formula.replace(" ","",1,,false,false)]'; 
run; 

/*Close File*/ 
data _null_; 
    file cmds; 
    put '[FILE-CLOSE("C:\filename.xls")]'; 
    put '[QUIT()]'; 
run; 

查找和替換功能無法正常工作。在我的日誌中讀到以下聲明後,我得到以下內容:

NOTE: The file CMDS is: 
    DDE Session, 
    SESSION=excel|system,RECFM=V,LRECL=256 

ERROR: DDE session not ready. 
FATAL: Unrecoverable I/O error detected in the execution of the DATA step program. 
    Aborted during the EXECUTION phase. 
NOTE: 2 records were written to the file CMDS. 
    The minimum record length was 21. 
    The maximum record length was 70. 
NOTE: The SAS System stopped processing this step because of errors. 
NOTE: DATA statement used (Total process time): 
    real time   0.63 seconds 
    cpu time   0.00 seconds 

有什麼建議嗎?

另外,有沒有人知道formula.replace語句中的參數是什麼?我只知道第一個和第二個是你想要找到的以及你想要替換的東西。我正在努力尋找任何文件。

回答

0

我的建議是編寫一個excel(VBA)宏來做到這一點,然後調用該宏;這不僅爲您提供了一個非常優秀的IDE來編寫代碼,以獲取上下文相關的線索等,還爲您提供了更多的控制。你可以從不同的工作簿調用宏,所以即使這是你必須重複做的事情(我是這麼認爲的),你可以把它放在一個「宏」模板工作簿中,它與自動文件分開開啓。

+0

這就是我剛纔的結論。 – ESmith5988 2013-05-09 17:55:42

1

http://www.lexjansen.com/wuss/2007/ApplicationsDevelopment/APP_SmithC_ImportingExcelFiles.pdf

如果輸入的路徑或文件名不正確,Excel將無法打開工作簿。您將在SAS日誌中看到類似以下內容的錯誤消息:

NOTE: The file DDECMD is: 
     DDE Session, 
     SESSION=excel|system,RECFM=V,LRECL=256 
ERROR: DDE session not ready. 
FATAL: Unrecoverable I/O error detected in the execution of the data step program. 
     Aborted during the EXECUTION phase. 
NOTE: 0 records were written to the file DDECMD. 
NOTE: The SAS System stopped processing this step because of errors. 
+0

很高興知道是什麼導致了錯誤信息!我結束了使用VBA程序來做到這一點,並保存爲一個CSV然後導入到SAS。我有另一個關於VBA程序的帖子,我最終在這裏使用:http://stackoverflow.com/questions/16469186/vba-open-excel-find-and-replace-delete-row-save-as-csv – ESmith5988 2015-02-09 15:20:24