2013-05-09 2 views
0

Я пытаюсь написать программу SAS для поиска и замены в файле excel через DDE. В частности, я пытаюсь найти строку заголовка для пробелов между строками (т. Е. «») И заменить их пробелами (т. Е. «»).SAS - Выполнение поиска и замены в файле Excel через DDE

Например, если у меня есть ячейка, содержащая «Test Name», я хочу найти и заменить, чтобы сделать это «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

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

Смежные вопросы