プロが教えるわが家の防犯対策術!

slk拡張子のエクセルファイルを保存せずに.xlsに変換するには

slk拡張子のエクセルファイルが開かれています。
私の勉強不足のせいかslkでマクロでピボットテーブルを実行するとエラーになってしまい
それをエクセルファイル.xlsで一旦保存後、実行するとエラーにならずうまくいきます。

その為、slk拡張子のエクセルファイルを.xlsに変換したいと思います。
しかしやりたいのはデータ容量が大きいので保存せずにそのまま.slkファイルを.xlsファイルに変換したいのですがそんなマクロって出来ますでしょうか?

A 回答 (2件)

>何故かはわかりませんが会社のデータ取得システムでslkでエクセルに呼び出すようになっています。



一度、理由は知っておいても損はないと思います。たぶん、十数年もそうしたシステムを使い続けているものだと思います。しかし、修正されるべきものだと思います。現在、海外で、ツールも販売されているようですが、値段はともかく(USD120.-ぐらい)、おそらくExcelの下位バージョンの互換性しかないはずで、再び、Excelの現在のバージョンで読まないとそのまま使えません。

sylkファイルフォーマット
http://support.microsoft.com/kb/410409/ja

この表は、Microsoft Multiplan 4.0 Standard Edition(正確には、4.11)ですが、この仕様は、他社製ですと、公開された標準フォーマットが、3.1 版だったはずで、特に問題はないとは思いますが、もう下位互換ということはありえませんが、上位互換だけです。

'肝心なマクロですが、モジュールのどこかに置いて実行してみてください。
'Excel 2007 でも使用可能なはずです。

Sub Sylk2Xls()
 'SYLKファイルを標準フォーマットに替えるマクロ
 '複数選択出来ます。
 Dim FileNames As Variant
 Dim fn As Variant
 Dim newFn As String
 Dim i As Variant, j As Long
 Dim Ext As String
 If Val(Application.Version) > 11 Then
  Ext = "xlsx"
 Else
  Ext = "xls"
 End If
 FileNames = Application.GetOpenFilename("SLYKファイル(*.slk),*.slk", , "SYLKファイルインポート", , True) 'Multiselect:=True
 If VarType(FileNames) = vbBoolean Then Exit Sub
 For Each fn In FileNames
  Application.ScreenUpdating = False
  With Workbooks.Open(fn)
   Do
    If IsEmpty(i) Then
     newFn = Mid$(fn, 1, InStrRev(fn, ".")) & Ext
    Else
     newFn = Mid$(fn, 1, InStrRev(fn, ".")) & "(" & CStr(i) & ")" & Ext
    End If
    If i > 10 Then MsgBox "Err:Skip Save File", 48: GoTo Jump '*
    '*i >0 にすると、重複するファイルは保存しません。
    i = i + 1
   Loop Until Dir(newFn) = ""
   .SaveAs newFn, xlWorkbookNormal
   .Close False
    j = j + 1
   Application.ScreenUpdating = True
   i = 1
  End With
Jump:
 Next fn
 If j > 0 Then
  MsgBox CStr(j) & "ファイルを処理しました", 64
 Else
  MsgBox "変換処理されませんでした。"
 End If
End Sub
    • good
    • 0
この回答へのお礼

1週間の出張であたふたしてお礼が遅くなり大変申し訳御座いません。
以前のシステムはCSVだったのですが最近導入したシステムがslkなのです。
結局、同タイトルをカレントフォルダで上書き保存して行く事にしました。
誠に有難う御座いました。

お礼日時:2010/11/10 23:13

slk(シルク または、sylk)というのは、1980年代の表計算テキストフォーマット・ファイルです。

ですから、もうお使いになるのは辞めたほうがよいです。

>slk拡張子のエクセルファイルを保存せずに.xlsに変換するには

当時、私は、slkファイルの規則集は、求めたことがあるけれども、私は手にはいらなかった記憶があります。管理工学などは、このフォーマットを使っていたようですが、結局、MSは、この公開フォーマットの仕様を変えたせいか、1990年代に入ると、完全な互換性を失ってしまい、Excelの登場となってからは、ますます利用度が減ってしまいました。

>私の勉強不足のせいかslkでマクロでピボットテーブルを実行するとエラーになってしまい
>それをエクセルファイル.xlsで一旦保存後、実行するとエラーにならずうまくいきます。

それは、プロセスの問題です。一端、xls で保存して実行するしかありません。そもそも、slkファイル自体が存在すること自体が疑問符がつきますが、ピボット・テーブルというものは、オブジェクトですから、slkというテキストファイルでは、オブジェクトを確保できません。

>しかしやりたいのはデータ容量が大きいので保存せずにそのまま.slkファイルを.xlsファイルに変換したいのですがそんなマクロって出来ますでしょうか?

マクロと言われても、単に、slkファイルを、xlsに保管しなおすだけです。
ただ、インターネットサイトで、変換するサイトやツールはあるかもしれません。
    • good
    • 0
この回答へのお礼

詳細な回答有難う御座います。
何故かはわかりませんが会社のデータ取得システムでslkでエクセルに呼び出すようになっています。
その読込んだデータをピボットで資料作成したりします。
slkそのままではピボットマクロがエラーになってしまったので
slkファイルを.xlsファイルに保存せずに変換しピボットマクロに移れたらと思ったのですが
やはり無理みたいですのでタイトルを日付にでもして
一旦保存後ピボットマクロに移るようにしようかと思います。
ActiveWorkbook.SaveAS Filename:=Dateでいけるのかな?と思います。

お礼日時:2010/10/23 19:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!