プロが教えるわが家の防犯対策術!

マクロ := がエラーになる原因

マクロ作成中、他のサイト等で「:=」が使われているマクロをコピペしたのですがエラーになってしまいます。
原因がわからず、困っております。
解決方法をご教授願います。

質問者からの補足コメント

  • 作成したマクロは下記の通りになります。

    sub sample

    ActiveSheet.Copy

     ActiveWorkbook.SaveAs _
      Filename:="C:\temp\" & Format(Date, "yyyymmdd"), _
      FileFormat:=xlsx

    End Sub

      補足日時:2020/01/28 11:57

A 回答 (10件)

☆「出力先のフォルダを指定したい」について


・ 固定の場合は「C:\temp\」を変更して下さい。
・ 毎回選択したいのならば以下のような感じはいかがですか?
Sub Sample1()
 With Application.FileDialog(msoFileDialogFolderPicker)
  .Title = "保存先のフォルダを選択して下さい。"
  .InitialFileName = "C:\temp\" 'デフォルトのホルダーを指定してください
  If .Show = True Then
   Application.DisplayAlerts = False
   ActiveWorkbook.SaveAs _
    Filename:=.SelectedItems(1) & "\" & Format(Date, "yyyymmdd") & ".xlsx", _
    FileFormat:=xlOpenXMLWorkbook
   If Workbooks.Count = 1 Then
    Application.Quit
   Else
    ThisWorkbook.Close
   End If
   Application.DisplayAlerts = True
  End If
 End With
End Sub
    • good
    • 1
この回答へのお礼

再度、ご教授頂きましてありがとうございます。
頂いたマクロで解決いたしました。
何度も御手数をおかけいたしました。

また、大変恐縮ではございますが追加でご教授いただきたく。。

エクセルファイル作成後、作成したエクセルで特定のシートのデータを値でコピペ(一つのシートor複数シートの場合あり)→不要なシートを削除して保存したいのです。

何度も申し訳ございませんが、何卒ご教授願います。

お礼日時:2020/01/29 16:37

エクセルファイル作成後、作成したエクセルで特定のシートのデータを値でコピペ(一つのシートor複数シートの場合あり)→不要なシートを削除して保存したいのです。



ほとんどなにをやりたいか判りません。

「エクセルファイル作成後」は、手作業で使った物ですか?プログラムによって作られたものですか?
その作成された「ファイル名」や「パス名」は何ですか?
「特定のシート」とは固定でしょうか?何かで算出するのでしょうか?固定ならばシート名を提示して下さい。算出するならそのやり方を説明して下さい。
「データを値でコピペ」とはシート全体を値でコピペで良いのでしょうか?
コピペ先は固定でしょうか?何かで算出するのでしょうか?固定ならばシート名を提示して下さい。算出するならそのやり方を説明して下さい。
「不要なシート」の判定はどのようにするのですか?

なお、元の質問に対する回答への質問ならば、別の質問にする必要はありませんが、元の質問や回答と直接関係ない物は別に質問を立てていただいた方が良いと思います。「教えて!goo」の質問はあなただけの物ではなく、後から他の人も使えるようになっていますので…
    • good
    • 1
この回答へのお礼

>>エクセルファイル作成後、作成したエクセルで特定のシートのデータを値でコピペ(一つのシートor複数シートの場合あり)→不要なシートを削除して保存したいのです。
>ほとんどなにをやりたいか判りません。
→説明が足らず、申し訳ございません。

> 「エクセルファイル作成後」は、手作業で使った物ですか?プログラムによって作られたものですか?
→はい、いろいろと調べ作ったものと、記録マクロを作成し、callで呼び出しています。
ただし、時間がかかってしまいご相談した次第です。

>その作成された「ファイル名」や「パス名」は何ですか?
>「特定のシート」とは固定でしょうか?何かで算出するのでしょうか?固定ならばシート名を提示して下さい。算出するならそのやり方を説明して下さい。
>「データを値でコピペ」とはシート全体を値でコピペで良いのでしょうか?
>コピペ先は固定でしょうか?何かで算出するのでしょうか?固定ならばシート名を提示して下さい。算出するならそのやり方を説明して下さい。
>「不要なシート」の判定はどのようにするのですか?
>なお、元の質問に対する回答への質問ならば、別の質問にする必要はありませんが、元の質問や回答と直接関係ない物は別に質問を立てていただいた方が良いと思います。「教えて!goo」の質問はあなただけの物ではなく、後から他の人も使えるようになっていますので…
→仰る通りですね。
別質問として再投稿させて頂きます。

本件につきましては、ご教授頂き、大変助かりました。
ありがとうございました。

お礼日時:2020/01/29 17:13

No.7 の補足



マクロ有の「○○.xlsm」を「××.xlsx」に名前を付けて保存しても開いている間はマクロのコードが残ってしまっているので、以下のブックを閉じる処理を行っています。

 If Workbooks.Count = 1 Then
  Application.Quit
 Else
  ThisWorkbook.Close
 End If
 Application.DisplayAlerts = True

※ このブックだけ開いている場合はエクセルごと閉じます。他のブックも開いているならこのブックだけ閉じます
    • good
    • 1

元のファイル名は全く使わないのならば



Sub エクセル作成()

 Application.DisplayAlerts = False
 ActiveWorkbook.SaveAs _
  Filename:="C:\temp\" & Format(Date, "yyyymmdd") & ".xlsx", _
  FileFormat:=xlOpenXMLWorkbook
 If Workbooks.Count = 1 Then
  Application.Quit
 Else
  ThisWorkbook.Close
 End If
 Application.DisplayAlerts = True

End Sub
    • good
    • 1
この回答へのお礼

お世話になっております。

今回、いろいろとご教授頂きましてありがとうございました。
無事、ご教授頂きましたマクロで解決いたしました。

ただ、出力先のフォルダを指定したいのですが
ご教授頂きましたマクロをどのように修正したらよろしいでしょうか?

恐れ入りますが、再度ご教授願います。

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

お礼日時:2020/01/29 11:57

No.4 の補足



元と同じフォルダに別名保存するならば、フォルダの指定は不要でこのまま実行するだけで済みます。
    • good
    • 1
この回答へのお礼

別フォルダに保存したいのです。

お礼日時:2020/01/28 13:14

元フルパスには「"C:●●.xlsm"」が入ります。

→ 元フォルダ名(ファイル名も含む)
ファイル名には最終的には「"C:●●yymmdd.xlsx"」が入ります。→ 出力ファイルのフルパス(ファイル名も含む)
「ファイル名 = Mid(元フルパス, 1, Len(元フルパス) - 5) 」の件
ファイル名の拡張子部分の「.xlsm」(5文字)を削除するための処理です。
    • good
    • 1
この回答へのお礼

うーん・・・

再度、ご教授頂きましてありがとうございます。

ファイル名 = Mid(元フルパス, 1, Len(元フルパス) - 5)の部分についても、理解いたしました。

また、何度も申し訳ありません。
上記にてご教授頂いた通り実際のパス、ファイル名を入力したのですが下記エラーが出てしまいます。

コンパイルエラー:
修正候補:識別子

原因は何が考えられますでしょうか?

お礼日時:2020/01/28 13:13

もしかしたら 先ほど取り消された質問の件でしょうか?


それでしたら以下のような物はいかがでしょうか?
違っていたら、申し訳ございません。無視して下さい。

Sub エクセル作成()

Dim 元フルパス As String
Dim ファイル名 As String
 元フルパス = ThisWorkbook.FullName
 ファイル名 = Mid(元フルパス, 1, Len(元フルパス) - 5) & Format(Date, "yymmdd") & ".xlsx"
 Application.DisplayAlerts = False
 ActiveWorkbook.SaveAs Filename:=ファイル名, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
 If Workbooks.Count = 1 Then
  Application.Quit
 Else
  ThisWorkbook.Close
 End If
 Application.DisplayAlerts = True

End Sub
    • good
    • 1
この回答へのお礼

ご教授頂きましてありがとうございます。

はい、仰るとおりです。
重複してしまうので、削除いたしました。

知識不足な為、申し訳ありませんが
ご教授頂きました内容について追加で質問させてください。

元フルパス、ファイル名とは下記という認識でよろしいのでしょうか?

元フルパス
"C:●●"→元フォルダ名(ファイル名は省く)

ファイル名
"●●.xlsm"

また、「ファイル名 = Mid(元フルパス, 1, Len(元フルパス) - 5) 」の内容を詳しくご教授願います。

お礼日時:2020/01/28 12:46

その部分をココへ書く

    • good
    • 1

コピペ元のコード作成したバージョンと質問者さんのバージョンに相違があるかもですね


その為質問者さんの方では存在しない、又は削除されてるとか?

あとは自作の物を本体を忘れてコピペしたなど?
    • good
    • 1

> 解決方法をご教授願います。



実際のコードもエラーメッセージも無しにアドバイス出来る事だと、
まずエラーメッセージを確認し、エラーの発生個所とメッセージの内容から原因を特定し、ヘルプなどで関数やメソッドのリファレンスを参考にして、期待している動作が行われるようにコードを修正する。
とかでしょうか。


・実際のコード
 業務内容に関するとかで支障があるなら、変数名変えるなんかして抜粋したもの
・エラーメッセージ
・エラーの発生個所
・「:=」がエラーになるって事は、その部分消したり、「=」にしたら動作するの?
なんかの情報を提示すると、もう少し具体的なアドバイスが出来る人がいたり、いなかったりするかも。
    • good
    • 1
この回答へのお礼

提示事項が不足しておりましたね。
申し訳ありません。

補足にマクロ提示いたしました。

エラーは下記の通りになります。

:=の場合
コンパイルエラー
修正候補:式

=へ書き換えてみると
実行時エラー'438'
オブジェクトは、このプロパティまたはメソッドをサポートしていません。

マクロ初心者で知識不足で申し訳ありませんが、何卒ご教授願います。

お礼日時:2020/01/28 12:00

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