सॉफ्टवेयर के संदर्भ में मैक्रो (macro ; यूनानी μάκρο = बड़ा या दूर) किसी नियम या पैटर्न का द्योतक है जो बताता है कि किसी इनपुट-श्रेणी (सेक्वेंस) के संगत आउटपुट श्रेणी क्या रहेगी। प्रायः इनपुट श्रेणी और आउटपुट श्रेणी दोनो ही वर्णों की श्रेणी या शब्दसमूह होते हैं। (जैसे इन्पुट श्रेणी = LDA और आउटपुट श्रेणी = Load accumulator आदि)। 'मैक्रो' शब्द कम्प्यूटर की प्रगति के आरम्भिक दिनों में मैक्रो-असेम्बुलरों के साथ अस्तित्व में आया। 

आजकल अधिकांश अप्लिकेशन सॉफ्टवेयरों (जैसे ओपेनआफिस, नोटपैड++ आदि) में मैक्रो रेकार्ड करने, उसे चलाने एवं सम्पादित करने आदि की सुविधा होती है। कुंजीपटल और माउस के मैक्रो भी होते हैं जो कुछ कुंजियों को दबाने मात्र से बहुत सारे काम क्रम से कर देते हैं जिनके लिये बहुत सी कुंजियाँ दबानी पड़तीं। मैक्रो का समुचित उपयोग करके पुनरावृत्त (रिपिटेटिव) कार्यों में श्रम से बचा जा सकता है और गलती की सम्भावना भी समाप्त हो जाती है।

 उदाहरण
नीचे ओपेन आफिस के राइटर में स्थित किसी डॉक्युमेंट का फांट यूनिकोड से कृतिदेव १० में बदलने के लिये निर्मित एक मैक्रो का कुछ भाग दिखाया गया है -

ओपेनआफिस का यूनिकोड को कृतिदेव में बदलने का मेरा आरम्भिक मैक्रो कुछ इस प्रकार है-

ओपेनआफिस का यूनिकोड को कृतिदेव में बदलने का मेरा आरम्भिक मैक्रो कुछ इस प्रकार है-
 
 REM ***** BASIC *****
 
 
 sub Unicode_to_Kritidev_trial
 rem ----------------------------------------------------------------------
 rem define variables
 dim document  as object
 dim dispatcher as object
 rem ----------------------------------------------------------------------
 rem get access to the document
 document  = ThisComponent.CurrentController.Frame
 dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 
 rem ----------------------------------------------------------------------
 
 dim args2(18) as new com.sun.star.beans.PropertyValue
 args2(0).Name = "SearchItem.StyleFamily"
 args2(0).Value = 2
 args2(1).Name = "SearchItem.CellType"
 args2(1).Value = 0
 args2(2).Name = "SearchItem.RowDirection"
 args2(2).Value = true
 args2(3).Name = "SearchItem.AllTables"
 args2(3).Value = false
 args2(4).Name = "SearchItem.Backward"
 args2(4).Value = false
 args2(5).Name = "SearchItem.Pattern"
 args2(5).Value = false
 args2(6).Name = "SearchItem.Content"
 args2(6).Value = false
 args2(7).Name = "SearchItem.AsianOptions"
 args2(7).Value = true
 args2(8).Name = "SearchItem.AlgorithmType"
 args2(8).Value = 0
 args2(9).Name = "SearchItem.SearchFlags"
 args2(9).Value = 65536
 args2(10).Name = "SearchItem.SearchString"
 args2(11).Name = "SearchItem.ReplaceString"
 args2(12).Name = "SearchItem.Locale"
 args2(12).Value = 255
 args2(13).Name = "SearchItem.ChangedChars"
 args2(13).Value = 2
 args2(14).Name = "SearchItem.DeletedChars"
 args2(14).Value = 2
 args2(15).Name = "SearchItem.InsertedChars"
 args2(15).Value = 2
 args2(16).Name = "SearchItem.TransliterateFlags"
 args2(16).Value = 1024
 args2(17).Name = "SearchItem.Command"
 args2(17).Value = 3
 args2(18).Name = "Quiet"
 args2(18).Value = true
 args2(10).Value = "‘"
 args2(11).Value = "^"
 dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
 
 
 args2(10).Value = "\’"
 args2(11).Value = "*"
 dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
 
 
 args2(10).Value = "“"
 args2(11).Value = "Þ"
 dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
 
 
 args2(10).Value = "”"
 args2(11).Value = "ß"
 dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
 
 
 args2(10).Value = "("
 args2(11).Value = "¼"
 dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
 
 
 args2(10).Value = ")"
 args2(11).Value = "½"
 dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
 
 args2(10).Value = "म"
 args2(11).Value = "e"
 dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
 
 
 args2(10).Value = "{"
 args2(11).Value = "¿"
 dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
 
 
 args2(10).Value = "}"
 args2(11).Value = "À"
 dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
 
 
 args2(10).Value = "="
 args2(11).Value = "¾"
 dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
 
 
 args2(10).Value = "।"
 args2(11).Value = "A"
 dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args2())
 
 end sub

प्रोग्रामिंग भाषा विषय
सॉफ्टवेयर