| 
        
          | 
              
                | T O P I C    R E V I E W |  
                | kdsaransh | Posted - 03/27/2015 : 1:01:23 PM Hi,
 
 i am using origin 9.1 and i want to open an macro (.xlsm) in origin. Please suggest.....
 
 thanks in advance.
 
 Regards,
 |  
                | 9   L A T E S T    R E P L I E S    (Newest First) |  
                | cracksnew | Posted - 04/18/2015 : 02:10:07 AM Facing Same Problem But have a great knowledge from this Post Thanks kdsarnash and all.
 
 |  
                | kdsaransh | Posted - 04/17/2015 : 05:20:54 AM Thanks a lot
 |  
                | SeanMao | Posted - 04/07/2015 : 01:58:28 AM Hi,
 
 If your Macro is attached to a specific sheet, you have to use the following syntax instead:
 
 
 
excel.run(Sheet1.test) // Sheet1 is the sheet name where Macro  
                       // test is attached to
 You can rewrite the code to fit your own situation.
 
 Regards!
 
 Sean
 
 
 |  
                | kdsaransh | Posted - 04/03/2015 : 07:04:13 AM Hello,
 
 Many thanks for the help. It solved a lot of problem, but the results are updated in excel workbook not in the origin workbook. This macro when run, will result in two additional sheet apart from the original sheet. These two additional sheets are not updated in the origin workbook, but are there in the excel sheet.
 
 Again many many thanks..
 |  
                | SeanMao | Posted - 04/03/2015 : 04:29:52 AM Hi,
 
 You can run the following LabTalk scripts in Script Window or new an OGS script file:
 
 
 
	dlgfile gr:=*.xlsm mu:=1; // Open dialog to select XLSM file
	
	string path$ = fname$;
	
	impExcel excludeempty:=0; // Import Excel file without excluding empty sheets
	
	%B = %H;                  // Record current active window
	
	document -append %(path$); // Open the XLSM file inside Origin
	
	excel.run(test); // Run Macro with name "test" associated with XLSM file
	
	save -i; // Save the results in the external Excel file
	
	win -a %B; // Activate the Origin workbook that imported Excel sheets before
	
	reimport; // Re-import the data from newly updated Excel file
	          // to obtain data from running Macro
 
 Those lines firstly import XLSM file into Origin, then it opens Excel workbook inside Origin as it is and run Excel macros using Excel program. After excel sheet obtained the results, the script then saved the results in that XLSM file.
 
 Eventually, through "Re-import" feature the results via running Macros will be updated in Origin workbook.
 
 Give it a try and see whether it works.
 
 Regards!
 
 Sean
 
 OriginLab Tech. Service
 
 |  
                | kdsaransh | Posted - 04/03/2015 : 01:32:27 AM Hi,
 
 Thanks for the reply, but its not clear to me.
 
 I am posting a excel macro code as below. I have an excel file and the sheet name is IDVDInputVDD. Now i want to run this excel macro code in labtalk so that my output files are formed in origin itself.
 
 
 Sub ExtractIDVDFromVDD()
 
 Dim i, j, k As Long
 Dim SourceSheetName, DestSheetName, DataType As String
 Dim SourceVDColNo, SourceVGColNo, SourceIDColNo, SourceIGColNo, SourceVSDummyColNo, SourceVDDummyColNo As Integer
 Dim VDStep, VGStep, VDStartValue, VDEndValue, VGStartValue, VGEndValue, W, L, Ls, Ld As Double
 Dim DestVDColNo, DestVGColNo, DestIDColNo, DestIGColNo, DestVSDummyColNo, DestVDDummyColNo As Integer
 Dim DestWColNo, DestLColNo, DestLsColNo, DestLdColNo, DestVSDummyAdjColNo As Integer
 Dim NoofDestSheet, NoofRow As Integer
 
 DataType = "Dark"
 SourceSheetName = "IDVDInputVDD"
 SourceVDColNo = 1
 SourceVGColNo = 2
 SourceIDColNo = 6
 SourceIGColNo = 5
 SourceISColNo = 7
 SourceVDDummyColNo = 8
 VDStep = -0.1
 VGStep = 5
 VDStartValue = 0
 VDEndValue = -40
 VGStartValue = -40
 VGEndValue = 0
 W = 0.1
 L = 0.01
 Ls = 0.01
 Ld = 0.01
 
 DestVDColNo = 1
 DestIDColNo = 3
 DestISColNo = 4
 DestIGColNo = 2
 DestVDDummyColNo = 5
 DestWColNo = 10
 DestLColNo = 11
 DestLsColNo = 12
 DestLdColNo = 13
 DestVSDummyAdjColNo = 14
 
 NoofVG = (VGEndValue - VGStartValue) / VGStep + 1
 NoofRow = (VDEndValue - VDStartValue) / VDStep + 1
 
 MsgBox ("NoofRow=" & NoofRow)
 
 DestSheetNameForward = "IDVDDD_Forward_Origin"
 DestSheetNameRev = "IDVDDD_Rev_Origin"
 
 Application.DisplayAlerts = False
 On Error Resume Next
 Sheets(DestSheetNameForward).Delete
 Application.DisplayAlerts = True
 Sheets.Add().Name = DestSheetNameForward
 
 Application.DisplayAlerts = False
 On Error Resume Next
 Sheets(DestSheetNameRev).Delete
 Application.DisplayAlerts = True
 Sheets.Add().Name = DestSheetNameRev
 
 For i = 1 To NoofVG
 
 
 Sheets(DestSheetNameForward).Cells(1, DestVDColNo + (i - 1) * 5).Value = "VD_" & (VGStartValue + VGStep * (i - 1)) * (-1) & "_DD_" & DataType & "_F"
 Sheets(DestSheetNameForward).Cells(1, DestIGColNo + (i - 1) * 5).Value = "IG_" & (VGStartValue + VGStep * (i - 1)) * (-1) & "_DD_" & DataType & "_F"
 Sheets(DestSheetNameForward).Cells(1, DestIDColNo + (i - 1) * 5).Value = "ID_" & (VGStartValue + VGStep * (i - 1)) * (-1) & "_DD_" & DataType & "_F"
 Sheets(DestSheetNameForward).Cells(1, DestISColNo + (i - 1) * 5).Value = "IS_" & (VGStartValue + VGStep * (i - 1)) * (-1) & "_DD_" & DataType & "_F"
 Sheets(DestSheetNameForward).Cells(1, DestVDDummyColNo + (i - 1) * 5).Value = "VdummyD_" & (VGStartValue + VGStep * (i - 1)) * (-1) & "_DD_" & DataType & "_F"
 
 For j = 1 To NoofRow
 Sheets(DestSheetNameForward).Cells(j + 1, DestVDColNo + (i - 1) * 5).Value = Sheets(SourceSheetName).Cells((i - 1) * 2 * NoofRow + j + 1, SourceVDColNo).Value
 Sheets(DestSheetNameForward).Cells(j + 1, DestIGColNo + (i - 1) * 5).Value = Sheets(SourceSheetName).Cells((i - 1) * 2 * NoofRow + j + 1, SourceIGColNo).Value
 Sheets(DestSheetNameForward).Cells(j + 1, DestIDColNo + (i - 1) * 5).Value = Sheets(SourceSheetName).Cells((i - 1) * 2 * NoofRow + j + 1, SourceIDColNo).Value
 Sheets(DestSheetNameForward).Cells(j + 1, DestISColNo + (i - 1) * 5).Value = Sheets(SourceSheetName).Cells((i - 1) * 2 * NoofRow + j + 1, SourceISColNo).Value
 Sheets(DestSheetNameForward).Cells(j + 1, DestVDDummyColNo + (i - 1) * 5).Value = Sheets(SourceSheetName).Cells((i - 1) * 2 * NoofRow + j + 1, SourceVDDummyColNo).Value
 Next j
 
 Sheets(DestSheetNameRev).Cells(1, DestVDColNo + (i - 1) * 5).Value = "VD_" & (VGStartValue + VGStep * (i - 1)) * (-1) & "_DD_" & DataType & "_R"
 Sheets(DestSheetNameRev).Cells(1, DestIGColNo + (i - 1) * 5).Value = "IG_" & (VGStartValue + VGStep * (i - 1)) * (-1) & "_DD_" & DataType & "_R"
 Sheets(DestSheetNameRev).Cells(1, DestIDColNo + (i - 1) * 5).Value = "ID_" & (VGStartValue + VGStep * (i - 1)) * (-1) & "_DD_" & DataType & "_R"
 Sheets(DestSheetNameRev).Cells(1, DestISColNo + (i - 1) * 5).Value = "IS_" & (VGStartValue + VGStep * (i - 1)) * (-1) & "_DD_" & DataType & "_R"
 Sheets(DestSheetNameRev).Cells(1, DestVDDummyColNo + (i - 1) * 5).Value = "VdummyD_" & (VGStartValue + VGStep * (i - 1)) * (-1) & "_DD_" & DataType & "_R"
 
 For j = 1 To NoofRow
 Sheets(DestSheetNameRev).Cells(j + 1, DestVDColNo + (i - 1) * 5).Value = Sheets(SourceSheetName).Cells((i - 1) * 2 * NoofRow + j + 1 + NoofRow, SourceVDColNo).Value
 Sheets(DestSheetNameRev).Cells(j + 1, DestIGColNo + (i - 1) * 5).Value = Sheets(SourceSheetName).Cells((i - 1) * 2 * NoofRow + j + 1 + NoofRow, SourceIGColNo).Value
 Sheets(DestSheetNameRev).Cells(j + 1, DestIDColNo + (i - 1) * 5).Value = Sheets(SourceSheetName).Cells((i - 1) * 2 * NoofRow + j + 1 + NoofRow, SourceIDColNo).Value
 Sheets(DestSheetNameRev).Cells(j + 1, DestISColNo + (i - 1) * 5).Value = Sheets(SourceSheetName).Cells((i - 1) * 2 * NoofRow + j + 1 + NoofRow, SourceISColNo).Value
 Sheets(DestSheetNameRev).Cells(j + 1, DestVDDummyColNo + (i - 1) * 5).Value = Sheets(SourceSheetName).Cells((i - 1) * 2 * NoofRow + j + 1 + NoofRow, SourceVDDummyColNo).Value
 Next j
 
 Next i
 End Sub
 
 
 
 Thanks and regards,
 Rajesh Agarwal..
 
 
 |  
                | Echo_Chu | Posted - 03/30/2015 : 06:02:07 AM Hi,
 
 To Run Excel Macros in Origin, you will need to open the external excel file in Origin instead of import it, for example
 
 
 
document -append D:\Test1.xlsm;
 
 To run the macro, please use codes as below
 
 
 
Excel.RunRange(SheetName,RangeName,Arg1,Arg2,&ldots;,Arg5)
 
 Echo
 OriginLab
 |  
                | kdsaransh | Posted - 03/29/2015 : 03:47:50 AM hi,
 Thanks,
 
 Importing is not a problem, but the problem is how to run the code that i had written in excel macro in labtalk.
 
 For example: i have an excel file and using excel macro i had done some analysis by writing a code in excel macro. Now i have to copy and paste the results obtained from excel to origin. but i simply want to import an excel file and run the  macro code using labtalk in origin so that the results are there in the origin file itself.
 
 I hope that i am clear.
 
 Thanks once again....
 |  
                | lkb0221 | Posted - 03/27/2015 : 2:13:37 PM You can still use the same XF:
 http://www.originlab.com/doc/X-Function/ref/impExcel
 |  |  
 |