Bir çalışma kitabını Excel'in hangi sürümünü yazılan olmadığı nasıl belirlenir

Makale çevirileri Makale çevirileri
Makale numarası: 225029 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Özet

Bu makalede, Microsoft Excel'in, belirli bir çalışma kitabını yazdı sürümünün nasıl belirleneceği gösterilmektedir.

Daha fazla bilgi

Microsoft Excel, yapılandırılmış depolama birimini kullanarak verileri kaydeder. Özellikle, dosya başlangıç (BOF) kayıtla başlayan içeriği kaydeder; burada, "Çalışma kitabı" (daha önce yalnızca "kitap") adlı bir veri akışı oluşturur. Bu sürüm yanı sıra, çalışma kitabının yararlı özniteliklerini içerir. Aşağıdaki Microsoft Visual C++ kodu, bir dosyayı okumak ve üzerinde BOF temel sürüm numarasını döndürür gösterilmiştir:
  1. Microsoft Developer Studio içinde yeni bir Win32 konsol uygulaması oluşturun ve XlVer olarak adlandırın.
  2. Projeye bir C++ kaynak dosyası (.cpp) ekleyin ve kaynak dosyaya aşağıdaki kodu ekleyin:
       #include <windows.h>
       #include <stdio.h>
    
       int XLVersionThatWroteFile(char *filename) {
          // Translate filename to Unicode
          WCHAR wcFilename[1024];
          int i = mbstowcs(wcFilename, filename, strlen(filename));
          wcFilename[i] = 0;
    
          // Open the document as an OLE compound document
          IStorage *pStorage;
          HRESULT hr;
          hr = ::StgOpenStorage(wcFilename, NULL,
                     STGM_READ | STGM_SHARE_EXCLUSIVE, NULL, 0, &pStorage);
    
          if(FAILED(hr)) return 0;
          // Open the data-stream where Microsoft Excel stores the data
          IStream *pStream;
          hr = pStorage->OpenStream(L"Workbook", NULL,
             STGM_READ | STGM_SHARE_EXCLUSIVE, 0, &pStream);
    
          // If "Workbook" does not exist, try "Book"
          if(FAILED(hr)) {
             hr = pStorage->OpenStream(L"Book", NULL,
    
                  STGM_READ | STGM_SHARE_EXCLUSIVE, 0, &pStream);
          }
          if(FAILED(hr)) {
             pStorage->Release();
             return 0;
          }
    
          // Get rupBuild & rupYear
          short rupBuild, rupYear;
          LARGE_INTEGER off;
          ULARGE_INTEGER newPos;
          off.QuadPart = 8;
          pStream->Seek(off, STREAM_SEEK_SET, &newPos);
          DWORD bytesRead;
          pStream->Read(&rupBuild, 2, &bytesRead);
          pStream->Read(&rupYear, 2, &bytesRead);
    
          // Let go of the IStorage pointer
          pStorage->Release();
    
          // Excel 8.0's rupyear = 1996
          if(rupYear == 1996) return 8;
          // Excel 9.0 comes after Excel 8.0...
          if(rupYear > 1996) return 9;
          // Excel 5.0's rupyear < 1994
          if(
             (rupYear < 1994) ||
             // Excel 5.0 & 7.0 have rupYear=1994 for some versions...
             (rupBuild == 2412) || (rupBuild == 3218) || (rupBuild == 3321)
          ) return 5;
          // All that's left is Excel 7.0
          return 7;
    
       }
    
       void main(int argc, char **argv) {
          if(argc != 2) {
             printf("Usage: XLVER filename.xls");
          }
          else {
             printf("Excel version = %d", XLVersionThatWroteFile(argv[1]));
          }
       }
    					
  3. Derleme, makinenizde bir .xls dosyasını bulun ve programı aşağıdaki gibi çalıştırın:

    XlVer.exe myfile.x

Referanslar

Ek bilgi için lütfen Microsoft Knowledge Base'de aşağıdaki makaleye bakın:

178605 How To Determine the Version of a Microsoft Excel Workbook

Özellikler

Makale numarası: 225029 - Last Review: 24 Ocak 2007 Çarşamba - Gözden geçirme: 4.5
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 5.0 Standard Edition
  • Microsoft Excel 95 Standard Edition
Anahtar Kelimeler: 
kbmt kbhowto KB225029 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:225029

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com