お世話になっております。
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
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
何卒よろしくお願いいたします。
No.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
これで、判定させます。
No.1
- 回答日時:
エラーが出るのが正しいと思うんだけど、
何でこういう抜け道というか動作に一貫性がないんだ、VBAは!
https://www.pcreview.co.uk/threads/compiling-err …
#紹介はしたけど、こういうの使わせたくないのが俺の本音
#我慢して使うとしても、後に当該コード読んで修正する側のために、何のためにわざわざ変数に代入しているのかコメントで解説しておくこと!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Visual Basic(VBA) Vba 互換モードでのAppActiveについて教えてください 2 2022/06/27 18:47
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) Excelマクロ Application.Run 5 2023/06/17 15:16
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/01 12:54
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) マクロの付いたExcelが開けません 3 2023/02/01 10:54
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
ExcelVBA Range クラスの Page...
-
ADODB.Streamを使用してUTF-8を...
-
なぜこんな初歩的なVBAのIf文で...
-
Outlook.ApplicationをCreateOb...
-
エクセルエラー13型が一致しま...
-
vbaのvlookup関数エラー原因を...
-
プロシージャ名の取得
-
VBAがブレークモードになっ...
-
VB6 エラー「プロシージャの呼...
-
ExcelVBAで、ユーザー定義型は...
-
【Excel VBA】マクロをボタンに...
-
Excelで下記のようにマクロを作...
-
1列目の何行目に検索文字がある...
-
UWSCのビジー待ちで60秒経った...
-
DataGridView からの値取得に関...
-
トランスポートレベルのエラー
-
VBAの実行時エラー91!どうしよ...
-
VBからAccessへの接続でエラー
-
ExcelVBAでsortしようとしたと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAでのエラー
-
マクロについて教えてください...
-
ExcelVBA Range クラスの Page...
-
実行時エラー3001「引数が間違...
-
VBS実行時エラー オブジェクト...
-
VBAがブレークモードになっ...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
EXCEL VBAマクロ中断でデバッグ...
-
VBSで変数の宣言はできないので...
-
ADODB.Streamを使用してUTF-8を...
-
実行時エラー -'-2147417848
-
AccessVBAでExcelを起動し、罫...
-
VB6+SQL サーバー 2000 で 実行...
-
Outlook.ApplicationをCreateOb...
-
Application.ActiveInspectorで...
おすすめ情報