//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++// // This example script for HighScore Plus puts output from // // all datasets directly into the MS-Excel application. // // // // A new Excel file is created for each data scan. The output // // shows the lattice parameters, phase quantification, // // crystallite size, and microstrain (assuming you set it up to // // determine all of those). // // // // // // Note: The Excel application is NOT SAVED, only opened! // //+++HSP++++++++++++++++++++++++++++++++++++++++++++++++++v4.x++++// program PhaseQuant; type darray = array of integer; var FExcel,FSheet,FBook{,Chart,Range}: Variant; p: darray; j,k: integer; Answer,Answer2,Answer3: double; Test,Test2,Test3: TExtendedValue; procedure CheckIfDocExists; begin // procedure to test, if the XDoc instance is available If not assigned(XDoc) then begin ShowMessage('This script will NOT run, because no HighScore document is present!'); halt; // script execution stops end; end; begin CheckIfDocExists; // Execute this script only once when the last data set is analyzed // if XDoc.Datasets[XDoc.DataSets.Count - 1] = XDoc.AnchorDataSet then begin // Create the Excel application object FExcel := ActiveXObject.Create('Excel.application'); FExcel.Visible := True; FExcel.ScreenUpdating := True; FBook := FExcel.Workbooks.Add; FExcel.ActiveSheet.Name := XDoc.AnchorDataSet.Name; FSheet := FExcel.ActiveSheet; // Add the headers setlength(p, XDoc.AnchorDataset.Structure.Phases.Count); setlength(p, XDoc.AnchorDataset.Structure.Phases.Count); FSheet.Cells(1, 1).Value := 'Scan Number'; FSheet.Cells(1, 2).Value := 'Scan Name'; FSheet.Cells(1, 3).Value := 'Temperature [ºC]'; FSheet.Cells(1, 4).Value := 'Rwp'; // begin // Test := XDoc.AnchorDataSet.Structure.Phases.WeightPercentage(1, ScanKAlpha1Wave); // Answer := Test.Value; // end; for j := 0 to XDoc.AnchorDataSet.Structure.Phases.Count - 1 do begin FSheet.Cells(1, 5 + 6*j + 0).Value := XDoc.AnchorDataset.Structure.Phases[j].Title + ' a(Å)'; FSheet.Cells(1, 5 + 6*j + 1).Value := 'Dev.'; FSheet.Cells(1, 5 + 6*j + 2).Value := XDoc.AnchorDataset.Structure.Phases[j].Title + ' b(Å)'; FSheet.Cells(1, 5 + 6*j + 3).Value := 'Dev.'; FSheet.Cells(1, 5 + 6*j + 4).Value := XDoc.AnchorDataset.Structure.Phases[j].Title + ' c(Å)'; FSheet.Cells(1, 5 + 6*j + 5).Value := 'Dev.'; FSheet.Cells(1, 6 + 6*XDoc.AnchorDataSet.Structure.Phases.Count + 2*j).Value := XDoc.AnchorDataset.Structure.Phases[j].Title + ' wt.%'; FSheet.Cells(1, 6 + 6*XDoc.AnchorDataSet.Structure.Phases.Count + 2*j + 1).Value := 'Dev.'; FSheet.Cells(1, 7 + 8*XDoc.AnchorDataSet.Structure.Phases.Count + 2*j).Value := XDoc.AnchorDataset.Structure.Phases[j].Title + ' Crystallite Size (Å)'; FSheet.Cells(1, 7 + 8*XDoc.AnchorDataSet.Structure.Phases.Count + 2*j + 1).Value := 'ESD (Å)'; FSheet.Cells(1, 8 + 10*XDoc.AnchorDataSet.Structure.Phases.Count + 2*j).Value := XDoc.AnchorDataset.Structure.Phases[j].Title + ' Strain'; FSheet.Cells(1, 8 + 10*XDoc.AnchorDataSet.Structure.Phases.Count + 2*j + 1).Value := 'ESD'; end; for j := 0 to XDoc.AnchorDataSet.Structure.Phases.Count - 1 do begin k := XDoc.DataSets.CurrentAnchorIndex; p(j) := j; Test := XDoc.DataSets[k].Structure.Phases.WeightPercentage(j, ScanKAlpha1Wave); Answer := Test.Value; Test2 := XDoc.Datasets[k].Structure.Phases[j].CrystalliteSize; Answer2 := Test2.Value; Test3 := XDoc.Datasets[k].Structure.Phases[j].MicroStrain; Answer3 := Test3.Value; FSheet.Cells(2, 1).Value := k+1; FSheet.Cells(2, 2).Value := XDoc.Datasets[k].Name; FSheet.Cells(2, 3).Value := XDoc.Datasets[k].Scan.ScanProperties.Temperature; FSheet.Cells(2, 4).Value := XDoc.Datasets[k].Structure.GlobalParameters.WeightedRprofile; FSheet.Cells(2, 5 + 6*j + 0).Value := XDoc.Datasets[k].Structure.Phases[j].Cell.A.Value; FSheet.Cells(2, 5 + 6*j + 1).Value := XDoc.Datasets[k].Structure.Phases[j].Cell.A.Deviation; FSheet.Cells(2, 5 + 6*j + 2).Value := XDoc.Datasets[k].Structure.Phases[j].Cell.B.Value; FSheet.Cells(2, 5 + 6*j + 3).Value := XDoc.Datasets[k].Structure.Phases[j].Cell.B.Deviation; FSheet.Cells(2, 5 + 6*j + 4).Value := XDoc.Datasets[k].Structure.Phases[j].Cell.C.Value; FSheet.Cells(2, 5 + 6*j + 5).Value := XDoc.Datasets[k].Structure.Phases[j].Cell.C.Deviation; FSheet.Cells(2, 6 + 6*XDoc.AnchorDataSet.Structure.Phases.Count + 2*j).Value := Answer; FSheet.Cells(2, 6 + 6*XDoc.AnchorDataSet.Structure.Phases.Count + 2*j + 1).Value := XDoc.DataSets[k].Structure.Phases.WeightPercentage(j, ScanKAlpha1Wave).ESD; FSheet.Cells(2, 7 + 8*XDoc.AnchorDataSet.Structure.Phases.Count + 2*j).Value := Answer2; FSheet.Cells(2, 7 + 8*XDoc.AnchorDataSet.Structure.Phases.Count + 2*j + 1).Value := XDoc.Datasets[k].Structure.Phases[j].CrystalliteSize.ESD; FSheet.Cells(2, 8 + 10*XDoc.AnchorDataSet.Structure.Phases.Count + 2*j).Value := Answer3; FSheet.Cells(2, 8 + 10*XDoc.AnchorDataSet.Structure.Phases.Count + 2*j + 1).Value := XDoc.Datasets[k].Structure.Phases[j].MicroStrain.ESD; end; end; end.