Business Model Canvas (Excel VBA)

3 min readNov 20, 2023

Alexander Osterwalder created a way to display how a business operates with nine building blocks: Key Partners, Key Activities, Value Propositions, Customer Relationships, Customer Segments, Key Resources, Channels
Cost Structure, and Revenue Streams.

If you want to use Microsoft Excel to Create a printable .xslx document, do the following.

If you need to get Excel, it’s available here:

Create a Blank workbook.

Make sure the Developer Tab is visible.

If you can’t find the Developer Tab, follow these steps:

  1. On the File tab, go to Options > Customize Ribbon.
  2. Under Customize the Ribbon and under Main Tabs, select the Developer check box.
  3. Press OK.

Click the [Visual Basic] button on the Developer Tab. It’s in the Code section.

Insert a Module.

Paste the following VBA code and paste it in the Excel Module.

Sub CreateBusinessModelCanvas()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws.Name = "Business Model Canvas"

' Set page layout to landscape and adjust print settings
With ws.PageSetup
.Orientation = xlLandscape
.CenterHorizontally = True
.CenterVertically = True
End With

' Adjust column widths to 11
ws.Columns.ColumnWidth = 11

' Define merged areas
Dim mergedAreas As Variant
mergedAreas = Array("A1:B1", "A2:B4", "C1:D1", "C2:D2", "E1:F1", "E2:F4", _
"G1:H1", "G2:H2", "I1:J1", "I2:J4", "C3:D3", "C4:D4", _
"G3:H3", "G4:H4", "A5:E5", "A6:E6", "F5:J5", "F6:J6")

Dim area As Variant
For Each area In mergedAreas
With ws.Range(area)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Font.Bold = True
.Borders.Weight = xlThin
End With
Next area

' Set row heights for specific rows
Dim row As Integer
For row = 2 To 6 Step 2
ws.Rows(row).RowHeight = 150
Next row

' Add titles to merged areas
ws.Range("A1").Value = "Key Partners"
ws.Range("C1").Value = "Key Activities"
ws.Range("E1").Value = "Value Propositions"
ws.Range("G1").Value = "Customer Relationships"
ws.Range("I1").Value = "Customer Segments"
ws.Range("C3").Value = "Key Resources"
ws.Range("G3").Value = "Channels"
ws.Range("A5").Value = "Cost Structure"
ws.Range("F5").Value = "Revenue Streams"
End Sub

This will give you a printable version of the Business Model Canvas for you to iterate and discover your needs and what works for you.