To solve the given optimization problem using Gurobi, we first need to understand and translate the natural language description into a mathematical model that can be represented in code.

The objective is to minimize the function: $3 \times \text{lanyards} + 3 \times \text{color printers}$, subject to several constraints involving usefulness ratings, storage space, and linear combinations of lanyards and color printers.

Given variables:
- $l$ (lanyards)
- $c$ (color printers)

Constraints as described:
1. Usefulness rating constraint: $4l + 23c \geq 61$
2. Storage space constraint: $23l + 9c \geq 48$
3. Another storage constraint mentioned but it seems redundant with the previous one.
4. Linear combination constraint: $6l - 6c \geq 0$
5. Maximum usefulness rating: $4l + 23c \leq 79$
6. Maximum storage space: $23l + 9c \leq 81$

All variables are restricted to non-negative integers.

Here's how we can represent this problem in Gurobi:

```python
from gurobipy import *

# Create a new model
m = Model("Optimization_Problem")

# Define the variables
lanyards = m.addVar(vtype=GRB.INTEGER, name="lanyards")
color_printers = m.addVar(vtype=GRB.INTEGER, name="color_printers")

# Objective function: minimize 3*lanyards + 3*color_printers
m.setObjective(3 * lanyards + 3 * color_printers, GRB.MINIMIZE)

# Constraints
m.addConstr(4 * lanyards + 23 * color_printers >= 61, name="usefulness_rating_min")
m.addConstr(23 * lanyards + 9 * color_printers >= 48, name="storage_space_min")
m.addConstr(6 * lanyards - 6 * color_printers >= 0, name="linear_combination")
m.addConstr(4 * lanyards + 23 * color_printers <= 79, name="usefulness_rating_max")
m.addConstr(23 * lanyards + 9 * color_printers <= 81, name="storage_space_max")

# Optimize model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution found: lanyards={lanyards.x}, color_printers={color_printers.x}")
else:
    print("No optimal solution found")
```