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

この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と関連する良く見られている質問

Q期限を超えた日付に警告のメッセージボックスを出すVBAを教えてください

I,K,L,M列は選択肢入力、及びカレンダー入力で入力されます。
Q列はK列+L列に期間が加算されて数式によって月末が表示されます。
R列はI列の日付によって3年目の年度末日が数式によって表示されています。
Q列の日付がR列の日付を超えてしまった時に警告を表すメッセージボックスを出したいと思います。
VBAの書き方を教えてください。

Aベストアンサー

一案です。
シート名のタブを右クリック
コードの表示をクリックしてVBエディターが起動

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 9 Or Target.Column = 11 Or Target.Column = 12 Then
If Range("Q" & Target.Row).Value > Range("R" & Target.Row).Value Then MsgBox "確認してください"
End If
End Sub

を貼り付けて閉じる。
とりあえず I、K、L列に値を入れてみてください。
Q,R列の関数の結果でメッセージが出ますが、
入力する順番で余計なメッセージも出ます。

Qvisual C# ピクチャーボックスの2点を取得し、テキストボックスに表示する方法を教えてください

Microsoft Visual Studio Express 2013 for Windows Desktop を使用してアプリケーションを作っています。言語はC#を使用しています。
使用し始めてから3ヶ月ほどの初心者ですが、よろしくお願いします。

現在のフォーム状況は、
真ん中にピクチャーボックスがあり、テキストボックスを4つ並べてあります。
クリックすると座標のX値、Y値をテキストボックス1と2に表示するようになっています。
続けて、ほかの場所をクリックすると新たな座標を同じくテキストボックス1、2に表示します。

今回、知りたいのは
一回目のクリックで得られる座標はテキストボックス1と2に表示する。
二回目のクリックで得られる座標はテキストボックス3と4に表示する。
その際テキストボックス1、2には1回目の座標が表示されたままにしておく。
というプログラムの組み方です。

本やネットでいろいろ探していますが、なかなか見つかりません。
回答のほどどうか宜しくお願い致します。

Aベストアンサー

カウンターを共通変数で確保します。(初期値:0)
クリックを検知するイベント処理の中で、
1.カウンターを2で割った余りが0ならテキストボックス1,2へ座標を表示
そうでないなら、テキストボックス3,4へ座標を表示する。
2.カウンターに1加算する。

上記により、交互にテキストボックス1、2とテキストボックス3,4への表示を繰り返します。

Qエクセルマクロわかりません(マクロ初心者です)

マクロ初心者ですネットで調べながら次のようなマクロを組んでみました。 一応動くのですが、①③は無駄が多すぎると感じます③に関しては3行目と9行目 ②は動くのですが、本当は Cells(m, 26)にLen(Cells(m, 3 + k)) - Len(Replace(Cells(m, 3 + k), "×", ""))の合計値を入れたいと思っていますが上手くいきません。どなたか詳しい方教えていただけませんか? 他にもおかしな部分があると思うのですが、とりあえず上記三点についてお願いします。
Dim buf As Variant
Dim buf2 As Variant
Dim p As Long
Dim k As Long
Dim n As Long
Dim q As Long

For m = 2 To 200
buf = Cells(m, 1)
buf2 = Cells(m, 2)

If buf = "" And buf2 = "" Then Exit Sub Else

Range("A1").AutoFilter Field:=1, Criteria1:=buf
Range("A1").AutoFilter Field:=2, Criteria1:=buf2

n = Range(Range("A2"), Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)) _
.SpecialCells(xlCellTypeVisible).Count
Selection.AutoFilter

q = n - 1
For p = 1 To q
For k = 0 To 21
Cells(2 + s, 3 + k) = Cells(2 + s, 3 + k) & Cells(3 + s, 3 + k)
Next
Rows(3 + s).Select
Selection.Delete Shift:=xlUpNext
Next
s = s + 1

Cells(m, 25) = (Len(Cells(m, 3)) + Len(Cells(m, 4)) + Len(Cells(m, 5)) + Len(Cells(m, 6)) + Len(Cells(m, 7)) + Len(Cells(m, 8)) + Len(Cells(m, 9)) + Len(Cells(m, 10)) + Len(Cells(m, 11)) + Len(Cells(m, 12)) + Len(Cells(m, 13)) + Len(Cells(m, 14)) + Len(Cells(m, 15)) + Len(Cells(m, 16)) + Len(Cells(m, 17)) + Len(Cells(m, 18)) + Len(Cells(m, 19)) + Len(Cells(m, 20)) + Len(Cells(m, 21)) + Len(Cells(m, 22)) + Len(Cells(m, 23))) / 4

For k = 0 To 21
Cells(m, 28 + k) = Len(Cells(m, 3 + k)) - Len(Replace(Cells(m, 3 + k), "×", ""))
Next

If buf2 = "人事" Then
Cells(m, 27) = 1
ElseIf buf2 = "総務" Or buf2 = "経理" Then
Cells(m, 27) = 2
ElseIf buf2 = "営業" Then
Cells(m, 27) = 3
ElseIf buf2 = "" Then
Cells(m, 27) = 4
ElseIf buf2 = "製造" Or buf2 = "開発" Or buf2 = "企画" Or buf2 = "情報システム" Then
Cells(m, 27) = 5
Else
Cells(m, 27) = "?"
End If
Next

マクロ初心者ですネットで調べながら次のようなマクロを組んでみました。 一応動くのですが、①③は無駄が多すぎると感じます③に関しては3行目と9行目 ②は動くのですが、本当は Cells(m, 26)にLen(Cells(m, 3 + k)) - Len(Replace(Cells(m, 3 + k), "×", ""))の合計値を入れたいと思っていますが上手くいきません。どなたか詳しい方教えていただけませんか? 他にもおかしな部分があると思うのですが、とりあえず上記三点についてお願いします。
Dim buf As Variant
Dim buf2 As Variant
Dim p As ...続きを読む

Aベストアンサー

①について
Rangeを指定してのその範囲の各セルの長さを求める関数は提供されていませんので、
それを作ってみました。
-----------------------------
'Rangeで指定された範囲の各セルの長さの和を取得
Public Function RangeLen(row1 As Long, col1 As Long, row2 As Long, col2 As Long) As Long
Dim row As Long
Dim col As Long
RangeLen = 0
For row = row1 To row2
For col = col1 To col2
RangeLen = RangeLen + Len(Cells(row, col))
Next
Next
End Function
---------------------------
Cells(m, 25) = RangeLen(m,3,m23) / 4
のように使います。

③について
select case文を使うのがすなおかとおもいます。
以下、select case文を使用したプロシージャです。
--------------------------------------------
'指定部門のタイプを取得
Public Function getType(str As String) As String
Select Case str
Case "人事"
getType = "1"
Case "総務", "経理"
getType = "2"
Case "営業"
getType = "3"
Case ""
getType = "4"
Case "製造", "開発", "企画", "情報システム"
getType = "5"
Case Else
getType = "?"
End Select
End Function
-------------------------------
Cells(m, 27) = getType(buf2)
のように使います。
Cells(m, 27)に設定している数値の呼び方が不明なのでとりあえずTypeと呼びました。
プロシージャ名はあなたのほうで、変えてください。
又、これは、あえてプロシージャを作る必要はありません。

②について
以下のようにしてください。
------------------------------
dim wa as long
wa = 0
For k = 0 To 21
wa = wa + Len(Cells(m, 3 + k)) - Len(Replace(Cells(m, 3 + k), "×", ""))
Next
Cells(m, 26) = wa
-----------------------------

①について
Rangeを指定してのその範囲の各セルの長さを求める関数は提供されていませんので、
それを作ってみました。
-----------------------------
'Rangeで指定された範囲の各セルの長さの和を取得
Public Function RangeLen(row1 As Long, col1 As Long, row2 As Long, col2 As Long) As Long
Dim row As Long
Dim col As Long
RangeLen = 0
For row = row1 To row2
For col = col1 To col2
RangeLen = RangeLen + Len(Cells(row, col))
Next
Next
End Func...続きを読む

Q秀丸のマクロのキー操作保存機能及び、マクロ構文について

秀丸のマクロの機能で、キー操作を記録するマクロがあるかと思います。

今回下記のことを実施しようとしておりますがうまくいきません。
どなたか教えていただけますと幸いです。

やりたいこと:
秀丸の「検索」⇒「grepして置換」⇒「(検索する文字列)入力」「(置換する文字列)空白」「(検索するファイル)*.txt」「(検索するフォルダ)入力」「正規表現チェック」⇒「すべて置換」

秀丸のマクロの機能の用いて
「マクロ」⇒「キー操作の開始/終了」⇒※上記やりたいこと実施⇒「キー操作の保存」

を実施していますがうまく登録できません。

上記やりたいことをマクロに登録するには何か手順などございますでしょうか。

もしくは構文がお分かりになる方がいれば教えてください。

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

Aベストアンサー

以下のようにしてください
ファイル名:test1.mac
-----------------------------------
setcompatiblemode 0x0F;
grepreplacedialog2 "Ver000(\\d)","VER000\\1","*.txt","d:\\goo\\sample",regular; //ダイアログボックスを表示する
-------------------------------------------------------------------------------------------------------------
又は
ファイル名:test2.mac
-----------------------------------
setcompatiblemode 0x0F;
grepreplace "Ver000(\\d)","VER00\\1","*.txt","d:\\goo\\sample",regular; //ダイアログボックスを表示しない
-------------------------------------------------------------------------------------------------------------
実行中に「grepして置換」のダイアログボックスを表示した場合は、test1.macを実行してください。
実行中に「grepして置換」のダイアログボックスを表示したくない場合は、test2.macを実行してください。

上記の例は
変換前の文字列:Ver0000~Ver0009
変換後の文字列:VER0000~VER0009
対象ファイル:*.txt
検索するフォルダ: d:\goo\sample (\の指定は\\となります)
regular:正規表現の指定あり
になります。
不明点は、補足してください。
Ver8.62で確認済みです。(Ver6.50以降であれば動作すると思います)

以下のようにしてください
ファイル名:test1.mac
-----------------------------------
setcompatiblemode 0x0F;
grepreplacedialog2 "Ver000(\\d)","VER000\\1","*.txt","d:\\goo\\sample",regular; //ダイアログボックスを表示する
-------------------------------------------------------------------------------------------------------------
又は
ファイル名:test2.mac
-----------------------------------
setcompatiblemode 0x0F;
grepreplace "Ver000(\\d)","VER00\\1","*.txt","d:\\goo\\sam...続きを読む

Q進数変換のプログラムタイトルの由来

進数変換のプログラムのタイトルでは
dec2bin
dec2hex
bin2dec
bin2hex
hex2bin
hex2dec
などのタイトル名を聞きます
dec(10進),bin(2進),hex(16進)なのは分かるのですが、真ん中の"2"の意味がわかりません。このタイトルの由来を知っている方是非教えてください。

Aベストアンサー

英語の慣用表現で2=toです from dec to bin
forを4 youをuなどと書きます

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

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


人気Q&Aランキング

おすすめ情報