Galin Iliev's blog

Software Architecture & Development

Office 2010 – office in the web

“Office 2010” will be official name of Office 14 and will be ready in “the first half of next year”.

Office 2010 — previously known by the code name "Office 14" — will include slimmed-down versions of Word, Excel, PowerPoint and OneNote that let people create and edit documents in a Web browser. Consumers will have access to a free, ad-supported version, and Capossela said the company is still hammering out what to charge businesses that want a version without ads.

source MSNBC

VS2008 and .NET 3.5 (WCF, WPF, WF) Training Kit

Microsoft released a nice training kit for the latest technologies that will help you to become a real hero very quickly.

This package is a real treasure because it covers a bunch of technologies:

  • C# 3.0
  • VB 9.0
  • LINQ
  • WPF
  • WCF
  • WF
  • Silverlight
  • AJAX
  • CardSpace
  • Mobile
  • Visual Studio Tools for Office
  • Visual Studio Team System
  • Application Lifecycle Management

And the materials are of the different types:

  • Presentation - will be very helpful to prepare talks for community
  • Demos
  • Labs - very helpful to walk through new technologies in deep.

Go grab it!

Microsoft Office file formats' specifications

You've probably heard about Office Open XML File formats. It is zipped folder which includes content in XML format as well as the code and included files. This means you can take a look inside them by simply changing the extension:


This is not new and there are plenty of article about this on the web.

The news here is that Microsoft published Microsoft Office Binary (.doc, .xls, .ppt) file formats specifications. It could be very interesting... But it could be boring too :) because according Joel Spolsky:

A normal programmer would conclude that Office’s binary file formats:

  • are deliberately obfuscated
  • are the product of a demented Borg mind
  • were created by insanely bad programmers
  • and are impossible to read or create correctly.

There is a good article from Joel Spolsky who is former PM @ Microsoft Excel team that analyze the specification.

Read it to find out how complex data are handled in limited CPU power and memory back in 80386 at 20 MHz

Sofia.NET UG meeting

Last week I had a talk on monthly meeting of Sofia.NET User group. The meeting was held in Microsoft Bulgaria office.

There was also beer and snacks kindly provided by Microsoft. There was also presents for the atendees :) You can take a look at pictures taken by Ruslan.

As I promised I publish slides and demos so everyone who is interested could play with them :)

Sofia.NET is free professional group so everyone is invited. If you want to become member and attend on our meetings register here.

Enable RibbonX intellisense in Visual Studio

I had interesting experince with customizing Ribbon within VS 2005.

At first place I was able to get very helpful intellisence in VS IDE. After some time I had to edit .xml fiel but... no intellisense. well ... what to do?!

I intalled VSTO - I didn;t have it after last reinstall. and bingo - I've got it again... until today...

What happened?! Why?!  I just don't know - (probably most of us hears customer, friends and relatives that phone us with strange PC question and says - Yesterday it worked and I haven't touched anything! :)  ) Same thing here :)

But I know how to enable that intellisense again. And this is how:

  1. You need customUI.xsd and Visual Studio 2005 :)
  2. place customUI.xsd in %programfiles%\Microsoft Visual Studio 8\Xml\Schemas  and this is it. You must have it.

There are some other ways to enable intellisence for xml in VS 2005. You can find them on Aaron Stebner's blog post.

2007 Office System Document: Lists of Control IDs

In new MS Office sysem 2007 is possible to target existing ribbon controls by using idMso="ControlId".

The question here is: How can I find existing control id?

Microsoft assisted to us and put them here. This is archive with Excel files with all controls ID and location description separated per application.

For non-office developers this could be also very interesting... because... well at least you can find how many ribbon controls are in certain application :)

  • # Excel Ribbon controls - 1732 rows
  • # Powerpoint Ribbon controls - 1573 rows
  • # Word Ribbon controls - 2602 rows

This shows how big became MS Office for all these years and explains why it is difficult to know. You guys didn;t think MS Office is easy, did you? :) 

For more details download 2007 Office System Document: Lists of Control IDs

MS Word 2003 menus in Word 2007

There was a lot noise about new Office 2007 User Interface and the Ribbon. Many people had difficulties getting used to new ribbon although after initial confusing it is quite easy to use.

For people who learned Word 2003 and feel in calm waters when see menubar we decided to start new project. This project is in its CTP and we haven't decided if we want to finish it yet.

The project utilizes Riboon to create good old menus in Word 2007. It would look like this:

Word 2003 Menus

We have some functionality implemented in menus already :).

I will be glad if you vote For or Against such initiative (By clicking on comments[x] link below ).

Thank you in advance

MS Access upsizing

Have you heard this term: "MS Access upsizing"? This means transfer all tables (with data) from MS Access to central database server as front-end forms keeps working. this action is applied when application from old days become too big, but it is too expensive to rewrite and as solution database back-end is changed but UI is kept.

I heard about this two weeks ago when I got a Access solution to upsize. so far so good :)  I learned it is typical to have two Access files - one for database and one with UI. UI file use linked tables to database file to access data. This sounds good as it separates layers.

All I had to do is transfer data from database file to SQL Server (the company has brand new server with SQL 2005 installed). Sound easy, doesn't it? From my experience I could tell you Nothing is easy! Especially when you want to make it bug free! To convince you in that I was told that author of this Access solution could not upsize it's own solution for a year. Scary huh!

My first step was to use MS Access Upsizing wizard to transfer data. Beleive or not but it transferred only half tables (I had 116 tables and about 55 was transfered). Why? I simply do not know... I suppose because very few tables have PK.

Second step: After fighting a bit with Upsizing wizard I decided to use newer products. I jumped directly to SQL Server 2005 tools (SQL Server Management Studio), I created new database and used SQL Server Import and Export Data Wizard. Guess what! I wasn't able to transfer all tables at once. Luckily it was Ok when I did it in two steps. Looks like I made half of the task :)

Today I found new newsgroups microsoft.public.access.sqlupsizing that contained link to Migrate to SQL Server page. Microsoft decided that MS Access Upsizing wizard is not good enough and started working on SQL Server Migration Assistants (there are assistants for Oracle ;), Access, and SyBase). they are still on CTP2 but it worked much better than SQL Server Import and Export Data Wizard. I was able to do same much easier and wihtout a single error (with a bunch of warrnings because missing default values). It will be much easier to explain whole procedure to our office

Milestone 1 Reached.

The second one is easy. Especially if you have experice with developing for MS Office. I executed the script below to relink linked tables to SQL server location (in UI access file)


Sub ModifyLinkedTables()
Dim tdf As TableDef, db As Database, tbfSource As TableDef
Set db = CurrentDb

On Error Resume Next

For Each tdf In db.TableDefs
'*** check if this is not system table
If InStr(1,, "MSys", vbTextCompare) = 0 Then

'*** check if table exists in AlliantData.mdb
tdf.Connect = TABLE_CONNECT

'*** print error if any
If Err.Number <> 0 Then
Debug.Print "Error Arrised at table: " & & " . Error is: "; Err.Description
End If

Set tbfSource = Nothing
End If

Debug.Print "Done!"
End Sub

I this is it. I will write again when I talk with clients and we change their files  :):). Whish me good luck

I tried some more solutions I come across article How to create a DSN-less connection to SQL Server for linked tables in Access 2003 and in Access 2002. It helps when you want to create linked tables in MS Access by script.