アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になっております。
excel2008年以降用に以下の形でPDF書き出しをしたいと思っています。
しかしながら、excel2003でこのマクロを実行すると、処理をとおっていないのに、
マクロを使用するだけで、コードエラーになります。

希望としては、excel2003,2008両方とも、処理Aを流し、excel2008以降のときだけ、
if excel2008年以降ならの箇所を通したいのですが、
excel2003ですと、処理が通る云々ではなく、マクロ事態を走らせることができません。
※実行するとコードエラーになる。

どのようにすれば、excel2003の時に、コードエラーがでなくなるでしょうか?

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
処理A
if excel2008年以降なら
fileName = o_folder & "\" & g_o_file & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

何卒よろしくお願いいたします。

A 回答 (2件)

こんにちは。



excel2008 というのは、Mac のこと?
そうでなければ、Excel 2007 からですよね。それで、その違いは、VBのバージョンが違うから、それを、Directive IF で区分けすれば済みますね。

使えるものは、VB6/VBA6/VBA7(2007を除外)

Sub Test()
  #If VB6 Then
    MsgBox "古いコード"
  #Else
    MsgBox "新しいコード"
    Filename = ThisWorkbook.FullName
   '' ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Filename
  #End If
End Sub

そうでなければ、古典的ですが、

 i = Val(Application.Version)
で取ればよいです。
If Application.Version >= 12 Then 'これは、古いバージョンでエラーが発生しますので、Valで囲います。

Excel2003の場合→11
Excel2007の場合→12

これで、判定させます。
    • good
    • 0
この回答へのお礼

助かりました!!!

ありがとうございます!!

お礼日時:2017/10/02 16:20

エラーが出るのが正しいと思うんだけど、



何でこういう抜け道というか動作に一貫性がないんだ、VBAは!
https://www.pcreview.co.uk/threads/compiling-err …

#紹介はしたけど、こういうの使わせたくないのが俺の本音
#我慢して使うとしても、後に当該コード読んで修正する側のために、何のためにわざわざ変数に代入しているのかコメントで解説しておくこと!
    • good
    • 0

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