次の方法で共有

Excel2002と2007で共通のコードを走らせたい

Anonymous
2010-08-30T07:47:13+00:00

現在、2002と2007両方をインストールした環境で両方で走る共通のコードがないか探しているところですが、探し方が悪いのか見つかりませんでした。

 探しているのは、保存時のバージョンの指定なのですが、2002、2007いずれで開いても97-2003形式で保存できるようにするには、どのようにコードを書けばよいのでしょうか?

 私が思いついたのは、次のようにExcelのバージョンを調べて保存形式を指定するというものです。

    Set Nbook = ActiveWorkbook

    (Nbookへの処理)

    If Application.Version <= 10 Then

        Nbook.SaveAs Fname

    Else

        Nbook.SaveAs Fname, FileFormat:=xlExcel8

    End If

    Nbook:保存するブックへの参照(保存する

    Fname:保存するブック名(フルパスで指定)。拡張子は".xls"を指定

 このコードでは、2002上で走らせようとすると"xlExcel8"が定義されていないためエラーとなり、動きません。

 2002、2007共通して走らせるコードの記述方法というのは存在しないのでしょうか? ご存知の方がおられましたら、ご教示ください。

 なお、上記コードは、ある社内システムで読み込むためのブックを作成した後、保存する時のものですが、社内システムで読めるExcelのブックが97-2003形式のみとなっておりますので、".xlsx"の拡張子で保存するのは不可という制約があります。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2010-08-30T08:36:47+00:00

こんにちは。

"SaveAs ….xls"だけでもxls形式で保存されるとは思いますが、FileFormatを指定する場合は

下記のように「xlExcel8」を使わず直接「56」と指定すればエラーになりません。

Public Sub Sample()

  Const Fname As String = "C:\Test\MyBook.xls"

  Select Case Val(Application.Version)

    Case Is >= 12

      Debug.Print "2007以降"

      ActiveWorkbook.SaveAs Filename:="C:\MyBook.xls", FileFormat:=56 '56(&H38)はxlExcel8

    Case Else

      Debug.Print "2007以前"

      ActiveWorkbook.SaveAs Filename:="C:\MyBook.xls"

  End Select

End Sub

この回答は役に立ちましたか?

0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2010-08-31T00:41:39+00:00

    きぬあささん、ご教示ありがとうございます。助かりました。

     未定義の定数は数値で指定すればよいのですね。将来、バージョンアップに伴い、また新旧両バージョンで走るコードが必要になった時のために覚えておこうと思います。

     ありがとうございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません