あるシートにマクロをかけて変更し、別の名前を付けた場合、「互換性チェック」のメッセージボックスが出て、「続行」を押さないと次に進めません。
連続で、このメッセージボックスを押すことなく次のマクロへ進みたいのですが、良い方法がないでしょうか?
教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

#2の回答者です



もしかしたら、一定のシートの部分だけではありませんか?
もし、そうなら、マクロコードが違います。
ブックの保存でよいのでしょうか?
    • good
    • 0

エクセル大好きさん、こんにちは。



すごいハンドルですね。

基本的には、最初に、互換性のチェックをした後に、以下のようなマクロを立てれば問題ないと思います。もちろん、そのままでもいけるはずですが、そのままですと、Excel2003などでは、不都合が出てくる可能性があります。

Format は、xlExcel8 (=56 xlExcel8 (97-2003 format in Excel 2007-2013, xls) で後は、DisplayAlert をFalseにすれば進むと思います。ダメ元で試してみてください。

なお、拡張子を替えるのは、昔は良かったのですが、今は、SaveAs のパラメータのFormat で替えないと、Excel側が認識しないことがあります。

'最初に、自ブックは、上書き保存してください。
'両方共、デフォルトのフォルダーにあるという条件ですから、そうでない場合は、Path を付けてください。
'//
Sub TestOldTypeFormat1()
Dim BaseFilename As String
BaseFilename = "test" & Format$(Date, "yymmdd")
Application.DisplayAlerts = False
With ThisWorkbook
 .SaveAs BaseFilename, xlExcel8
 .Close True 'True にしておいたほうが安全です。
End With
Application.DisplayAlerts = True
End Sub

'元のブックは自動的に閉じてしまいますので、再度開けるようにしたものです。
Sub TestOldTypeFormat2()
 Dim BaseFilename As String
 Dim myFileName As String
 Dim newBk As Workbook
 BaseFilename = "test2_" & Format$(Date, "yymmdd")
 myFileName = ThisWorkbook.Name
 Application.DisplayAlerts = False
 ThisWorkbook.SaveAs BaseFilename, xlExcel8
 ActiveWorkbook.Close True
 Application.DisplayAlerts = True
 Workbooks.Open myFileName
End Sub
'///

p.s.
「エクセルの数字が文字と認識された場合の処理を教えてください。」
の質問もちょっと気になっています。

通常、マクロでは、
範囲.Value = 範囲.Vaue

というコードだけで、数字は数値として認識します。
    • good
    • 0

参照されているEXCELファイルの拡張子を確認してみてください。


2007年以降『~.xlsx』ですが、参照され散るファイルは『~.xls』であれば互換性表示が出てきます。
『~.xls』ファイルを『~.xlsx』形式に変更すれば出なくなりますが、拡張子だけ変更すると書式等が変わる可能性があります。
手間ですが拡張子を変更する場合はファイルを開いて『名前を付けて保存』から拡張子の変更をお勧めします。
    • good
    • 0
この回答へのお礼

ありがとうございます。
おっしゃる通り、拡張子は~.xlsです。
今後は、先に拡張子を変更してからマクロを実施します。

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

お礼日時:2015/11/26 13:11

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q久しぶりにEXCELVBAプログラムをしたのですが、作成したマクロがマクロの実行ボタンを押してもそこに表示されません

題名どおりなんですが、ExcelVBAでマクロを組んで、マクロをいざ実行しようとExcelのマクロ実行のボタンを押したのですが、作ったマクロ名が表示されません。以前に個人用マクロブックのPersonal.xlsで作成したマクロは表示されています。

どうすれば、解決されるでしょうか??

Aベストアンサー

> 作ったマクロ名が表示されません。
Private Sub ...
と書いているとか、
モジュールの先頭に
Option Private Module
が書いてあるとか、
引数があるとか。

Qコマンドプロンプトで外のexeやbat を実行した後、処理の終了を待たずに次に進みたい

お世話になります。

現在コマンドプロンプトで下記のように他exeを実行しています。

C:\hoge.exe

しかしながら、このhoge.exeが終了しないと次の行に進めないのです。
このhoge.exeを起動したらすぐに(終了をまたずに)次の行に進ませたいのですが、どのようにしたらよいでしょうか?
※さらに、batファイルを挟むなど、どのような方法でも結構ですのでなにとぞよろしくお願いします。

お手数ですが、なにとぞよろしくお願いします。

Aベストアンサー

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/246798

start.exeを使うべし。
Windows XP SP3でfuga.txtがすぐ出来たのち、しばらくしてからtest.txtが生成されたのを確認した。(startコマンドのないときは、しばらく待ってほぼ同時だった)
====================
検証に用いたもの:
以下のように書いたbatファイル
--
START /B Q5605372.exe
echo "hoge" > fuga.txt
--
C#で書いた、5秒経ってからtest.txtを作成し、終了するプログラム(Q5605372.exe)
/*ソース*/
using System;

namespace Q5605372

{

class MainClass

{

public static void Main (string[] args)

{

System.Threading.Thread.Sleep(5000);

System.IO.StreamWriter sw = new System.IO.StreamWriter("test.txt",false,System.Text.Encoding.UTF8);

sw.WriteLine("fin");

sw.Flush();

sw.Close();

}

}

}

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/246798

start.exeを使うべし。
Windows XP SP3でfuga.txtがすぐ出来たのち、しばらくしてからtest.txtが生成されたのを確認した。(startコマンドのないときは、しばらく待ってほぼ同時だった)
====================
検証に用いたもの:
以下のように書いたbatファイル
--
START /B Q5605372.exe
echo "hoge" > fuga.txt
--
C#で書いた、5秒経ってからtest.txtを作成し、終了するプログラム(Q5605372.exe)
/*ソース*/
using System;

...続きを読む

Q正規表現での入力文字数と連続文字チェック

教えてください。

正規表現を用いて、
最低入力桁数
使用文字
同一連続文字
の制限を掛けたいと思っています。

以下で、6桁以上で[]内で文字の制限も掛けられていると思っているのですが、

^(?=.{6,})[a-zA-Z0-9]+$

上記に、
111111やAAAAAA といった、連続文字を不可にするのを組み込めません。

過去の質問から以下を認めないといった記述でいけるのではと思っているのですが。
(.)\1{5,}

宜しくお願い致します。

Aベストアンサー

申し訳ありません、最後の2文字が欠けましたので訂正します。

^(?!(.)\1{5,})(?=.{6,})[a-zA-Z0-9]+$

QN88互換BASICで「メッセージの定義されてないエラーです」と出ます

N88互換BASICで「メッセージの定義されてないエラーです」と出ます…

最近プログラミングを始めた初心者です。
プログラムでエラーが出て困っています、どこが問題なのか改善方法を教えてください。

10 DIM A(100,100,100)
20 INPUT "B=";B
40 FOR i=1 to 100 step 1
50 FOR j=1 to 100 step 1
60 FOR k=1 to 100 step 1
70 A(i,j,k)=B
80 print A(i,j,k)
90 NEXT k
100 NEXT j
110 NEXT i

こんな感じのものです。
配列変数を作って、Bの数値を全ての配列変数に代入したいです。

宜しくお願致します。

Aベストアンサー

10 DIM A(100,100,100)
で約4MByteのメモリーが必要ですが、N88互換BASICでこのサイズの配列は取れないのでは?
単純にスケールダウンして↓で動くならOut of Memoryエラーです。

10 DIM A(10,10,10)
20 INPUT "B=";B
40 FOR i=1 to 10 step 1
50 FOR j=1 to 10 step 1
60 FOR k=1 to 10 step 1
70 A(i,j,k)=B
80 print A(i,j,k)
90 NEXT k
100 NEXT j
110 NEXT i

Qメッセージボックスの表示

下記、T_商品マスタテーブルにID・商品名共にまったくの
新規(例)ID=6,商品名=自動車が追加された時に、
メッセージボックスで「新規商品が登録されました。」と表示し、
ID=1,商品名=TV(○×社製)が追加された時には、
「IDが重複しています。確認してください。」と表示させるには、
どうしたら良いですか?


T_商品マスタ
 ID 商品名
 1  TV
 2  ラジオ
 3  携帯電話
 4  洗濯機
 5  冷蔵庫

Aベストアンサー

書き方はプログラム言語によります。
フローチャートとしては以下になります。

1.新規追加IDと、既存のIDの全てを比較します。
2.重複したIDが無ければ、メッセージボックスで「新規商品が登録されました。」と表示します。
3.重複したIDがあれば「IDが重複しています。確認してください。」と表示します。


人気Q&Aランキング

おすすめ情報