| Author | 
                
                  Topic   | 
                
                
                 
                 
                 
                 
                 
                                 | 
               
              
                | 
                 OndrejMM 
                 
                
                Australia 
                81 Posts  | 
                
                  
                    
                      
                       Posted - 07/13/2009 :  02:38:40 AM
                        
                        
                        
                        
                        
                      
  | 
                     
                    
                       Hi guys, Im sorry to bother you again, but I have the following problem,.. I have one workbook containing ~40 worksheets with the following names: AD-S11, AD-S22, AD-S33, BD-SS11, BD-S22, BD-S33, . XX-S11, XX-S22, XX-SS33 and I would nned to merge the all AD, BD  XX data into a worksheet, e.g. the current workbook will have a AD worksheet containing data from AD-S11, AD-S22, AD-S33 worksheets;  a BD worksheet will contain data from BD-S11, BD-S22, BD-S33 worksheets, . etc.,.. can you please give me some advice how to do it?  Cheers, Ondrej
  | 
                     
                   
                 | 
               
              
                | 
                 rlewis 
                 
                
                Canada 
                253 Posts  | 
                
                  
                    
                      
                       Posted - 07/13/2009 :  1:29:50 PM
                        
                        
                        
                        
                        
                      
  | 
                     
                    
                       if you are willint to try OriginC ... the following should do more or less what you want ...
 
 
	void CollectWorkSheets(string strNamePrefix)
	{
		/*
			CollectSheets
			Collects All Worksheets from the current Workbook with names beginning with "strNamePrefix" into a single Workbook;
		*/
		WorksheetPage wpSource=Project.Pages(-1);
		if(wpSource.IsValid()==true)
		{
			WorksheetPage WPtarget;
			string strName=strNamePrefix;
			strName.TrimLeft();
			strName.TrimRight();
			strName.MakeLower();
			if(WPtarget.Create(strNamePrefix,CREATE_HIDDEN)==true)
			{
				Worksheet WksEmpty(WPtarget.Layers(0));
				WksEmpty.SetName("XXX"+strName);
				int NumLayers=0;
				foreach (Layer Layr in wpSource.Layers)
				{
					Worksheet Wks(Layr);
					if(Wks.IsValid()==true)
					{
						string strWksName=Wks.GetName();
						if(is_str_match_begin(strName,strWksName)==true)
						{
							NumLayers++;
							if(WPtarget.AddLayer(Layr)<0)
							{
								goto ErrorExit;
							}
						}
					}
				}
				if(NumLayers>0)
				{
					if(WksEmpty.IsValid()==true)
					{
						WksEmpty.Destroy();
					}
					string strWbk=WPtarget.GetName();
					SetDataDisplayText("Worksheets Collected in  "+strWbk);
					return;
				}
ErrorExit:		WPtarget.Destroy();
			}
		}
		SetDataDisplayText("Command Failed ...");
	}
 | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                | 
                 masterd 
                 
                
                Australia 
                 Posts  | 
                
                  
                    
                      
                       Posted - 03/15/2010 :  11:26:14 PM
                        
                        
                        
                        
                        
                      
  | 
                     
                    
                       Hi guys,
  Im getting following errors trying to compile the above script in 7.5 Pro SR5. Is this script for version 8 maybe?
  compiling... merge worksheets.c ...(49) :Error, Member function  Worksheet::SetName  not defined or does not have matching prototype. ...(32) :Error, error(s) found in compiling method  ...(49) :Error, general compile error ...(46) :Error, general compile error ...(39) :Error, general compile error ...(32) :Error, error(s) found in compiling function CollectWorkSheets | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                | 
                 rlewis 
                 
                
                Canada 
                253 Posts  | 
                
                  
                    
                      
                       Posted - 03/16/2010 :  12:17:37 AM
                        
                        
                        
                        
                        
                      
  | 
                     
                    
                       Yes ...  The code is intended for Origin 8.0 and Higher .. Workbooks with multiple sheets were first introduced in Origin 8.0 | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                | 
                 masterd 
                 
                
                Australia 
                 Posts  | 
                
                  
                 | 
               
              
                | 
                 rlewis 
                 
                
                Canada 
                253 Posts  | 
                
                  
                    
                      
                       Posted - 03/16/2010 :  02:19:09 AM
                        
                        
                        
                        
                        
                      
  | 
                     
                    
                       The Following OC function is designed to collect the columns of all worksheets with names beginning with the characters in the string "strWksStem" into a single newly created worksheet (Returns the name of the new worksheet)
  It works in Origin 7.5-SR6  ... Needs a little tweaking though ...   
 
string CollectWksCols(string strWksStem)
{
	vector<string> vctWksNames;
	vctWksNames.RemoveAll();
	string strNameStem=strWksStem;
	strNameStem+="*";
	foreach(PageBase pB in Project.Pages)
	{
		if(pB.GetType()==EXIST_WKS)
		{
			string strWksName;
			if(pB.GetName(strWksName)==true)
			{
				if(strWksName.Match(strNameStem)==true)
				{
					vctWksNames.Add(strWksName);
				}
			}
		}
	}
	int NumMatches=vctWksNames.GetSize();
	Worksheet WksDest;
	if(WksDest.Create("origin.otw")==false) goto ErrorExit;
	int nCols=WksDest.GetNumCols()-1;
	for(int i=nCols;i>=0;i--)
	{
		WksDest.DeleteCol(i);
	}
	for(i=0;i<NumMatches;i++)
	{
		Worksheet Wks;
		if(Wks.Attach(vctWksNames[i])==false) goto ErrorExit;
		foreach (Column col in Wks.Columns)
		{
			Dataset dSource(col);
			if(dSource.IsValid()==true)
			{
				int i=WksDest.AddCol();
				if(i==(-1)) goto ErrorExit;
				Dataset dDest;
				if(dDest.Attach(WksDest,i)==false) goto ErrorExit;
				dDest.SetSize(dSource.GetSize());
				dDest=dSource;
			}
		}
			
	}
	if(WksDest.GetNumCols()>0)
	{
		return (WksDest.GetPage().GetName());
	}
	ErrorExit:
	if(WksDest.IsValid()==true)
	{
		WksDest.Destroy();
	}
	return ("");
}
 | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                | 
                 olsy 
                 
                
                29 Posts  | 
                
                  
                    
                      
                       Posted - 11/09/2011 :  12:23:32 PM
                        
                        
                        
                        
                        
                      
  | 
                     
                    
                       Hi guys! ive tried the first code and its copying all worksheets from the original on to a new. Do you know what could be a problem? and second code gives an error..i also dont know why.. any idea?Please help! string Par4plot; WorksheetPage wpSource=Project.Pages(-1); 		if(wpSource.IsValid()==true) 		{ 			WorksheetPage WPtarget; 			string strName=Par4plot; 			strName.TrimLeft(); 			strName.TrimRight(); 			strName.MakeLower(); 			if(WPtarget.Create(Par4plot,CREATE_HIDDEN)==true) 			{ 				Worksheet WksEmpty(WPtarget.Layers(0)); 				WksEmpty.SetName("XXX"+strName); 				int NumLayers=0; 				foreach (Layer Layr in wpSource.Layers) 				{ 					Worksheet Wks(Layr); 					if(Wks.IsValid()==true) 					{ 						string strWksName=Wks.GetName(); 						if(is_str_match_begin(strName,strWksName)==true) 						{ 							NumLayers++; 							if(WPtarget.AddLayer(Layr)<0) 							{ 								goto ErrorExit; 							} 						} 					} 				} 				if(NumLayers>0) 				{ 					if(WksEmpty.IsValid()==true) 					{ 						WksEmpty.Destroy(); 					} 					string strWbk=WPtarget.GetName(); 					SetDataDisplayText("Worksheets Collected in  "+strWbk); 					return; 				} ErrorExit:		WPtarget.Destroy(); 			} 		} 		SetDataDisplayText("Command Failed ..."); 	} | 
                     
                    
                        | 
                     
                   
                 | 
               
              
                |   | 
                
                  Topic   | 
                
                
                 
                 
                 
                 
                 
                 | 
               
             
           | 
         
       
     |