<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Import different ranges of an excel worksheet in SAS(macro function) in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Import-different-ranges-of-an-excel-worksheet-in-SAS-macro/m-p/121135#M24819</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You want to use the data to generate the macro calls.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are many ways to do this, here are a copy&lt;/P&gt;&lt;P&gt;1) Use CALL EXECUTE;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt; set abcd;&lt;/P&gt;&lt;P&gt; call execute( cats( '%import_table(',catx(',',name_of_table,limit1,limit2),')' );&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2) Write the code to a file and %INCLUDE it.&lt;/P&gt;&lt;P&gt;filename code temp;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; file code;&lt;/P&gt;&lt;P&gt; set abcd;&lt;/P&gt;&lt;P&gt; put '%import_table(' name_of_table '.' limit1 ',' limit2 ')' ;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%include code / source2 ;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 27 Jun 2013 14:32:11 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2013-06-27T14:32:11Z</dc:date>
    <item>
      <title>Import different ranges of an excel worksheet in SAS(macro function)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Import-different-ranges-of-an-excel-worksheet-in-SAS-macro/m-p/121134#M24818</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am quite new on SAS. Now I have a problem of importing excel into SAS. I have a worksheet in which I have multiple ranges of rating coeffs. Now I was supposed to import these ranges of table one by one. But now I want to have a macro function which can help import these tables in a row. What I have done right now is a macro function like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %macro &lt;SPAN style="color: #ff99cc;"&gt;import_table&lt;/SPAN&gt;(name_of_table, range_limit1, range_limit2);&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; text-align: justify; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc import datafile= "C:\...\myfile\rating_table.xlsm"&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; text-align: justify; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out = table_&amp;amp;name_of_table dbms=excelcs replace;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; text-align: justify; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sheet="different_tables$"&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; text-align: justify; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; range= "&amp;amp;range_limit1:&amp;amp;range_limit2";&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; text-align: justify; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; text-align: justify; background-color: #ffffff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %mend;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #333333; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; text-align: justify; background-color: #ffffff;"&gt;This macro function works well. As example %import_table(rate1,A2,BI8) can import the this table successfully. In the meantime, I also have imported a data sheet into SAS in which we have information about different range limits for each rating table. I have imported something like this(&lt;SPAN style="color: #ff0000;"&gt;named abcd&lt;/SPAN&gt;),&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt; indice&amp;nbsp;&amp;nbsp;&amp;nbsp; name_of_table&amp;nbsp;&amp;nbsp;&amp;nbsp; limit1&amp;nbsp;&amp;nbsp;&amp;nbsp; limit2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; aa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BI8&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A10&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BI50&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; A52&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BI 240&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 22&lt;/P&gt;&lt;P&gt;So this data sheet includes 22 rows. What I want is to create a macro function to import automatically all these rating tables in a row. I wanted to use the data sheet &lt;SPAN style="color: #ff0000;"&gt;abcd&lt;/SPAN&gt; to get range limits and table name for each table, then use these three values in the macro function import_table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, I'd like to have something like,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro import_all();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do i=1 to 22;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #ff99cc;"&gt;import_table&lt;/SPAN&gt;(name_of_table, limit1, limit2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is it possible to have something like that? I tried a lot but I am not able to achieve.... &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Many thanks for your help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Jun 2013 13:46:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Import-different-ranges-of-an-excel-worksheet-in-SAS-macro/m-p/121134#M24818</guid>
      <dc:creator>finsangel</dc:creator>
      <dc:date>2013-06-27T13:46:20Z</dc:date>
    </item>
    <item>
      <title>Re: Import different ranges of an excel worksheet in SAS(macro function)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Import-different-ranges-of-an-excel-worksheet-in-SAS-macro/m-p/121135#M24819</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You want to use the data to generate the macro calls.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are many ways to do this, here are a copy&lt;/P&gt;&lt;P&gt;1) Use CALL EXECUTE;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt; set abcd;&lt;/P&gt;&lt;P&gt; call execute( cats( '%import_table(',catx(',',name_of_table,limit1,limit2),')' );&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2) Write the code to a file and %INCLUDE it.&lt;/P&gt;&lt;P&gt;filename code temp;&lt;/P&gt;&lt;P&gt;data _null_;&lt;/P&gt;&lt;P&gt;&amp;nbsp; file code;&lt;/P&gt;&lt;P&gt; set abcd;&lt;/P&gt;&lt;P&gt; put '%import_table(' name_of_table '.' limit1 ',' limit2 ')' ;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%include code / source2 ;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Jun 2013 14:32:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Import-different-ranges-of-an-excel-worksheet-in-SAS-macro/m-p/121135#M24819</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2013-06-27T14:32:11Z</dc:date>
    </item>
    <item>
      <title>Re: Import different ranges of an excel worksheet in SAS(macro function)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Import-different-ranges-of-an-excel-worksheet-in-SAS-macro/m-p/121136#M24820</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks a lot Tom. I'll try it. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Once again, many thanks.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Jun 2013 14:47:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Import-different-ranges-of-an-excel-worksheet-in-SAS-macro/m-p/121136#M24820</guid>
      <dc:creator>finsangel</dc:creator>
      <dc:date>2013-06-27T14:47:37Z</dc:date>
    </item>
    <item>
      <title>Re: Import different ranges of an excel worksheet in SAS(macro function)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Import-different-ranges-of-an-excel-worksheet-in-SAS-macro/m-p/121137#M24821</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you define those ranges with names in the excel workbook, you should be able to proc copy from the workbook straight into WORK library with code like:&lt;/P&gt;&lt;P&gt;libname wkbk "your\workbook.xlsx" access= readonly;&lt;/P&gt;&lt;P&gt;proc copy in= wkbk out= WORK mt= data ;&lt;/P&gt;&lt;P&gt;select &amp;amp;range_list ;&lt;/P&gt;&lt;P&gt;Run ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Just make sure that the rangenames comply with SAS rules for sas dataset names and also beware that the names are case-sensitive in that SELECT statemenr.&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;SAS could fill that range_list for you, but you probanly don't need that extra code when you already know what to expect.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Good luck&lt;/P&gt;&lt;P&gt;pp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Jun 2013 08:24:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Import-different-ranges-of-an-excel-worksheet-in-SAS-macro/m-p/121137#M24821</guid>
      <dc:creator>Peter_C</dc:creator>
      <dc:date>2013-06-28T08:24:49Z</dc:date>
    </item>
    <item>
      <title>Re: Import different ranges of an excel worksheet in SAS(macro function)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Import-different-ranges-of-an-excel-worksheet-in-SAS-macro/m-p/121138#M24822</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Try something like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%macro import_all();&lt;/P&gt;&lt;P&gt;%let dsid = %sysfunc(open(abcd,i));&lt;/P&gt;&lt;P&gt;%do %while (%sysfunc(fetch(&amp;amp;dsid))=0);&lt;/P&gt;&lt;P&gt;%let name_of_table = %sysfunc(getvarc(&amp;amp;dsid,%sysfunc(varnum(&amp;amp;dsid,name_of_table))));&lt;/P&gt;&lt;P&gt;%let limit1 = %sysfunc(getvarc(&amp;amp;dsid,%sysfunc(varnum(&amp;amp;dsid,limit1))));&lt;/P&gt;&lt;P&gt;%let limit2 = %sysfunc(getvarc(&amp;amp;dsid,%sysfunc(varnum(&amp;amp;dsid,limit2))));&lt;/P&gt;&lt;P&gt;%import_table(&amp;amp;name_of_table, &amp;amp;limit1, &amp;amp;limit2);&lt;/P&gt;&lt;P&gt;%end;&amp;nbsp; &lt;/P&gt;&lt;P&gt;%mend;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dont forget to add different checks like for existance of the dataset etc. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Jun 2013 14:16:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Import-different-ranges-of-an-excel-worksheet-in-SAS-macro/m-p/121138#M24822</guid>
      <dc:creator>Vladislaff</dc:creator>
      <dc:date>2013-06-28T14:16:24Z</dc:date>
    </item>
    <item>
      <title>Re: Import different ranges of an excel worksheet in SAS(macro function)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Import-different-ranges-of-an-excel-worksheet-in-SAS-macro/m-p/121139#M24823</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks a lot everyone, good to learn a lot of ways to do it&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Jun 2013 15:18:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Import-different-ranges-of-an-excel-worksheet-in-SAS-macro/m-p/121139#M24823</guid>
      <dc:creator>finsangel</dc:creator>
      <dc:date>2013-06-28T15:18:53Z</dc:date>
    </item>
  </channel>
</rss>

