[発掘][MP]SYLKファイルフォーマット

<HEAD>



https://support.microsoft.com/ja-jp/help/410409
で公開されていた資料。MPというのはMultiplanの略。
なお、Notepadで開くことはできる。基本はテキスト形式でバイナリではない。

<BODY>




<DIV class="ng-isolate-scope" content-section="section"><!-- ngIf: typeof(contentSection) !== 'string' --><SECTION
class="section ng-scope" data-grid="col-12" ng-if="typeof(contentSection) !== 'string'"
ng-class="{'internal-content': isInternalSection() }" ng-attr-id="{{contentSection.meta.id}}"
applies-to-saps=""> <!-- ngIf: isInternalSection() --> <!-- ngIf: contentSection.title -->
<DIV class="ng-scope" ng-if="contentSection.title">
<H2>概要</H2>
<HR class="c-divider f-pad-bottom-6x f-pad-top-3x">
<!-- ngIf: contentSection.subtitle --> </DIV><!-- end ngIf: contentSection.title -->
<!-- ngIf: contentSection.content && contentSection.content.length > 0 -->
<DIV class="section-body ng-scope" ng-if="contentSection.content &amp;&amp; contentSection.content.length > 0">
<!-- ngRepeat: content in contentSection.content track by $index -->
<DIV class="ng-scope" ng-repeat="content in contentSection.content track by $index"
data-grid="col-12" ng-attr-data-grid="{{getStyleClass()}}">
<DIV class="ng-isolate-scope" data-grid="col-12" compile="content">
<DIV class="kb-summary-section section ng-scope">この資料は、<B style="background: rgb(255, 255, 102); color: rgb(0, 0, 0);">SYLK</B>
<B style="background: rgb(102, 255, 255); color: rgb(0, 0, 0);">ファイル</B>
フォーマットについて説明したものです。<BR></DIV></DIV><!-- ngIf: contentSection.meta.type != 'single-column' && !$last -->
</DIV><!-- end ngRepeat: content in contentSection.content track by $index -->
</DIV><!-- end ngIf: contentSection.content && contentSection.content.length > 0 --></SECTION><!-- end ngIf: typeof(contentSection) !== 'string' --></DIV></DIV><!-- end ngIf: !isString && hasContent() --><!-- end ngRepeat: section in contentSectionList track by $index --><!-- ngIf: !isString && hasContent() -->
<DIV class="ng-scope" ng-repeat="section in contentSectionList track by $index"
ng-if="!isString &amp;&amp; hasContent()">
<DIV class="ng-isolate-scope" content-section="section"><!-- ngIf: typeof(contentSection) !== 'string' --><SECTION
class="section ng-scope" data-grid="col-12" ng-if="typeof(contentSection) !== 'string'"
ng-class="{'internal-content': isInternalSection() }" ng-attr-id="{{contentSection.meta.id}}"
applies-to-saps=""> <!-- ngIf: isInternalSection() --> <!-- ngIf: contentSection.title -->
<DIV class="ng-scope" ng-if="contentSection.title">
<H2 class="c-heading-4 f-lean bold ng-binding" ng-bind-html="contentSection.title">現象</H2>
<HR class="c-divider f-pad-bottom-6x f-pad-top-3x">
<!-- ngIf: contentSection.subtitle --> </DIV><!-- end ngIf: contentSection.title -->
<!-- ngIf: contentSection.content && contentSection.content.length > 0 -->
<DIV class="section-body ng-scope" ng-if="contentSection.content &amp;&amp; contentSection.content.length > 0">
<!-- ngRepeat: content in contentSection.content track by $index -->
<DIV class="ng-scope" ng-repeat="content in contentSection.content track by $index"
data-grid="col-12" ng-attr-data-grid="{{getStyleClass()}}">
<DIV class="ng-isolate-scope" data-grid="col-12" compile="content">
<DIV class="ng-scope"><B style="background: rgb(255, 255, 102); color: rgb(0, 0, 0);">SYLK</B>
<B style="background: rgb(102, 255, 255); color: rgb(0, 0, 0);">ファイル</B>は
"Symbolic Link File" の略で、この形式の<B style="background: rgb(102, 255, 255); color: rgb(0, 0, 0);">ファイル</B>は他の
プログラムでも読むことができ、Multiplan でも読み込むことができます。<BR>つまり、Multiplan
と他のプログラムとの間のデータの互換性は、両方向の流れに<BR>なります。<BR>
<H3 class="sbody-h3">1. <B style="background: rgb(255, 255, 102); color: rgb(0, 0, 0);">SYLK</B>
<B
style="background: rgb(102, 255, 255); color: rgb(0, 0, 0);">ファイル</B>の構造</H3><B
style="background: rgb(255, 255, 102); color: rgb(0, 0, 0);">SYLK</B> <B style="background: rgb(102, 255, 255); color: rgb(0, 0, 0);">ファイル</B>は、ASCII
コード（漢字は、シフト JIS コード）からなるテキスト<BR><B style="background: rgb(102, 255, 255); color: rgb(0, 0, 0);">ファイル</B>で、その構造は図
1 のようになっています。<BR><IMG title="" class="graphic" alt="" src="https://support.microsoft.com/library/images/support/kbgraphics/public/ja/jp410409a.gif"><BR>レコードの終わりには、必ず
CR/LF が付きます。<B
style="background: rgb(102, 255, 255); color: rgb(0, 0, 0);">ファイル</B>の先頭は "ID
コード ", 最後は "E コード で不可欠なレコードです。この 2 つのレコードにはさまれた レコードが、データレコードです。<BR><IMG title=""
class="graphic" alt="" src="https://support.microsoft.com/library/images/support/kbgraphics/public/ja/jp410409b.gif"><BR>データレコードは
図 2 のように、セミコロン (;) で区切られた複数のフィールド<BR>から構成されています。各レコードの先頭フィールドには、そのレコードの性質を<BR>表す
2 文字までのレコードタイプ記述子 RTD (Record Type Descliptor) が入ります。
それに続く各フィールドには、そのフィールドの性質を表す 1 文字のフィールド<BR>タイプ記述子 FTD (Field Type Descriptor)
とパラメータ (データ) が入ります。<BR>
<H3 class="sbody-h3">2. レコードの順序</H3><B style="background: rgb(255, 255, 102); color: rgb(0, 0, 0);">SYLK</B>
<B
style="background: rgb(102, 255, 255); color: rgb(0, 0, 0);">ファイル</B>のレコードは、下記のような順序で並んでいる必要があります。<BR>
<OL class="sbody-num_list">
<LI>最初のレコードは、ID レコードです。<BR></LI>
<LI>P レコードは、書式表示を指定するピクチャ・フォーマットを登録します。<BR></LI>
<LI>B レコードは、Multiplan でデータ入力を行なう際に必要なものです。 Multiplan
でデータ入力を行なわない場合は省略することもできます。<BR></LI>
<LI>他のレコードから参照されている C レコードは、参照するレコード (;D または、 ;G を伴っている)
よりも前になければなりません。<BR></LI>
<LI>名前を定義するレコードは、その名前を参照するレコードよりも前にある必要が あります。<BR></LI>
<LI>窓分割と窓の属性は、正しい順序で並んでいなければなりません。<BR></LI>
<LI>NU レコードは、必ず NE レコードの前に必要です。<BR></LI>
<LI><B
style="background: rgb(102, 255, 255); color: rgb(0, 0, 0);">ファイル</B>の最後は、必ず E
レコードで終ります。<BR><IMG title="" class="graphic" alt="" src="https://support.microsoft.com/library/images/support/kbgraphics/public/ja/jp410409c.gif"><BR></LI></OL></DIV></DIV><!-- ngIf: contentSection.meta.type != 'single-column' && !$last -->
</DIV><!-- end ngRepeat: content in contentSection.content track by $index -->
</DIV><!-- end ngIf: contentSection.content && contentSection.content.length > 0 --></SECTION><!-- end ngIf: typeof(contentSection) !== 'string' --></DIV></DIV><!-- end ngIf: !isString && hasContent() --><!-- end ngRepeat: section in contentSectionList track by $index --><!-- ngIf: !isString -->
<DIV class="ng-scope" ng-if="!isString">
<DIV class="ng-isolate-scope" compile="contentSectionList"></DIV></DIV><!-- end ngIf: !isString --></DIV></DIV><!-- ngIf: article.details.subType === 'error-status-code' --></DIV>


最終更新日:
2004/09/05
 </SPAN>
</BODY>
[slk拡張子のエクセルファイルを保存せずに.xlsに変換するには](https://oshiete.goo.ne.jp/qa/6269422.html)
>この表は、Microsoft Multiplan 4.0 Standard Edition(正確には、4.11)ですが、この仕様は、他社製ですと、公開された標準フォーマットが、3.1 版だったはずで、特に問題はないとは思いますが、もう下位互換ということはありえませんが、上位互換だけです。
[【Excel】SYLK ファイルであることを確認しましたが、読み込むことができません](https://www.softel.co.jp/blogs/tech/archives/2361)
Excel はテキスト、CSVファイルの先頭の文字列が “ID” で始まる場合、ファイルを SYLK 形式として認識します。
つまり
`ID,Name,Data`
や
`ID01,Name,Data`
はだめだった。
当時は最初のIDを別の字に変える方法で切り抜ける方法もあったようだ。
<UL>
<li>Microsoftサポートオンライン "SYLK: ファイルの形式が無効です"ファイルを開くと、エラー メッセージ
<li>Microsoftサポートオンライン [XL2000] 先頭データが「ID」で始まるテキストまたは CSV ファイルを開けない問題
</UL>


この現象はEXCEL2016では生じないようだ。だが当然のことながら、EXCELは突然昔のバグが復活する時がある。
[Excel 2016でSYLKファイルを開けない](https://social.technet.microsoft.com/Forums/lync/ja-JP/507ae282-43ca-4268-a68f-fa519c3a8cbf/excel-201612391sylk125011244912452125231243438283123691239412356?forum=Office2016ITProJP)

[Excel-VBA CSVファイルがエラーで開けない（SYLK ファイルであることを確認しましたが、読み込むことができません）](http://vba.doorblog.jp/archives/51303804.html)
EXCEL2013の例。このようにバグが発生している。

<H2>SYLKファイルを作ってみる</H2>
```text
ID,sName,sMoney
1,M,1000
```

これをANSIのSY.csvとして保存しても問題なく開ける。
しかし、拡張子をSLKとするとエラーになる。

一度Excelに読み込ませて、SLK形式で出力する。
すると表示形式など書式の指定が出てくる。
それをカットすると、次のようになる

```text
ID;PWXL;N;E
C;Y1;X1;K"ID"
C;X2;K"sName"
C;X3;K"sMoney"
C;Y2;X1;K1
C;X2;K"M"
C;X3;K1000
E
```



<H2>EXCELから出力されたSYLKファイル</H2>
3行程度のテキストが85行になる
省略しているが、2行目から表示形式の設定が始まり、50行目すぎからフォントの指定が始まる。
大体上記の仕様に沿っている。
しかし、上の記事がなければなんのことだかわからない。
なぜ必要がある記事を消してしまうのか、マイクロソフトのやっていることは企業としてありえない。資源とかリソースとか泣き言は一切効かない。そういうのを言わないためにITってできたんだから。サーバーにアクセスがないから非効率なので消しますってすごいジョークです。そういう非効率なデータを乗せるのがネットだったんだから。
しかし、Excelから出力されたSYLKファイルは確かにデータベースに変換することは難しい。
書式指定などを飛ばして1行1行読む必要があるとかんがえられる。

```text
ID;PWXL;N;E
P;PGeneral
P;P0
P;P0.00
P;P#,##0
P;P#,##0.00
P;P#,##0;;\-#,##0
P;P#,##0;;[Red]\-#,##0
P;P#,##0.00;;\-#,##0.00
P;P#,##0.00;;[Red]\-#,##0.00
P;P"$"#,##0;;"$"\-#,##0
P;P"$"#,##0;;[Red]"$"\-#,##0
P;P"$"#,##0.00;;"$"\-#,##0.00
P;P"$"#,##0.00;;[Red]"$"\-#,##0.00
P;P0%
P;P0.00%
P;P0.00E+00
P;P##0.0E+0
P;P#\ ?/?
P;P#\ ??/??
P;Pyyyy/m/d
P;Pd\-mmm\-yy
P;Pd\-mmm
P;Pmmm\-yy
P;Ph:mm\ AM/PM
P;Ph:mm:ss\ AM/PM
P;Ph:mm
P;Ph:mm:ss
P;Pyyyy/m/d\ h:mm
P;Pmm:ss
P;Pmm:ss.0
P;P@
P;P[h]:mm:ss
P;P_ "$"* #,##0_ ;;_ "$"* \-#,##0_ ;;_ "$"* "-"_ ;;_ @_ 
P;P_ * #,##0_ ;;_ * \-#,##0_ ;;_ * "-"_ ;;_ @_ 
P;P_ "$"* #,##0.00_ ;;_ "$"* \-#,##0.00_ ;;_ "$"* "-"??_ ;;_ @_ 
P;P_ * #,##0.00_ ;;_ * \-#,##0.00_ ;;_ * "-"??_ ;;_ @_ 
P;P\$#,##0_);;\(\$#,##0\)
P;P\$#,##0_);;[Red]\(\$#,##0\)
P;P\$#,##0.00_);;\(\$#,##0.00\)
P;P\$#,##0.00_);;[Red]\(\$#,##0.00\)
P;Pm/d/yy
P;Pyyyy"年"m"月"d"日"
P;Ph"時"mm"分"
P;Ph"時"mm"分"ss"秒"
P;P[$-411]rr\.m\.d
P;P[$-411]rr"年"m"月"d"日"
P;Pyyyy"年"m"月"
P;Pm"月"d"日"
P;P[$]rr"年"m"月"d"日";;@
P;P[$-411]rr"年"m"月"d"日";;@
P;P[$]rr"年"m"月"d"日";;@
P;FＭＳ 明朝;M220;L9
P;FＭＳ 明朝;M220;L9
P;FＭＳ 明朝;M220;L9
P;EＭＳ 明朝;M120
F;P0;DG0G8;M270
B;Y2;X3;D0 0 1 2
O;L;D;V0;K47;G100 0.001
C;Y1;X1;K"ID"
C;X2;K"sName"
C;X3;K"sMoney"
C;Y2;X1;K1
C;X2;K"M"
C;X3;K1000
E
```

<H2>ACCESSへのインポート</H2>
https://web.archive.org/web/20040228005422/http://www.accessclub.jp/bbs2/0011/beginter03664.html
http://www.accessclub.jp/bbs2/0011/beginter03664.html

一発でできる方法はないため、Excelで変換する方法が推奨されている。
<H2>MACのSYLK</H2>
http://www.marvel.co.jp/htm/Technic/Technic/sylk.html
改行コードが異なるのでCRがついている。
WINDOWSならCRLFになる。
<H2>文字コード、区切り文字</H2>
文字コードはANSI形式(ただし改行のように表示されないものは使用できない)
区切り文字はTAB、コンマが使用可能。

他のファイル形式では転送されない Excel の書式と機能 -Excel](https://support.microsoft.com/ja-jp/office/%E4%BB%96%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%BD%A2%E5%BC%8F%E3%81%A7%E3%81%AF%E8%BB%A2%E9%80%81%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84-excel-%E3%81%AE%E6%9B%B8%E5%BC%8F%E3%81%A8%E6%A9%9F%E8%83%BD-8fdd91a3-792e-4aef-a5bb-46f603d0e585)
SYLK (シンボリックリンク)
このファイル形式 (.slk) では、作業中のワークシートの値と数式のみが保存され、セルの書式は制限されています。

1つのセルに最大255文字が保存されています。

Excel の関数が SYLK 形式でサポートされていない場合は、ファイルが保存される前に関数が計算され、数式は計算結果の値に置き換えられます。

ほとんどのテキスト形式が保存されます。変換された文字列は、セルの最初の文字の書式に設定されます。 回転したテキスト、結合されたセル、および水平方向と垂直方向のテキスト配置の設定が失われます。 Excel で変換した SYLK シートをもう一度開くと、フォントの色が別の色に変換されることがあります。 罫線は、単一行の罫線に変換されます。 セルの網かけは、灰色の網かけに変換されます。

ページ設定、および任意指定のページ区切りは失われます。

セルのコメントは保存されます。 Excel で SYLK ファイルをもう一度開いた場合は、コメントを表示することができます。

グラフィックス、埋め込みグラフ、オブジェクト、フォームコントロール、ハイパーリンク、データの入力規則、条件付き書式、およびその他のワークシートの機能は失われます。

VBA コードは保存されません。

ピボットテーブルレポートの現在のビューに表示されているデータが保存されます。その他のピボットテーブルデータはすべて失われます。

<H3>Excel でサポートしているファイル形式</H3>

[Excel でサポートしているファイル形式](https://support.microsoft.com/ja-jp/office/excel-%E3%81%A7%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%BD%A2%E5%BC%8F-0943ff2c-6014-4e8d-aaea-b83d51d46247)
テキスト ファイル形式
SYLK .slk シンボリック リンク形式。 作業中のシートだけを保存します。

<H3>クリップボードを使うファイル形式</H3>

[Excel 使用を開始する 基本 他のファイル形式でブックを保存する](https://support.microsoft.com/ja-jp/office/%e4%bb%96%e3%81%ae%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e5%bd%a2%e5%bc%8f%e3%81%a7%e3%83%96%e3%83%83%e3%82%af%e3%82%92%e4%bf%9d%e5%ad%98%e3%81%99%e3%82%8b-6a16c862-4a36-48f9-a300-c2ca0065286e?ui=ja-jp&rs=ja-jp&ad=jp)

>クリップボードを使うファイル形式

>次のいずれかのファイル形式でクリップボードにデータをコピーすると、[貼り付け] または [形式を選択して貼り付け] ([ホーム]、[クリップボード]、[貼り付け]) を使って Excel に貼り付けられます。
表中
SYLK .slk シンボリックリンク形式

<H2>いつものことだが</H2>
それにしてもたかだか数10年程度で使い物にならなくなるフォーマットの製品で「ペーパーレス」とかよく言えるものだ。IT業界はなぜできもしない、やれもしない寝言を言ってカネを稼ごうとするのか。結局紙の代替となるフォーマットなど作れないのでどんどんモデルチェンジして前のは使えませんばかり。一番のセキュリティはPCを使わないことだってところにだんだん近づいているよね。