質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Q&A

解決済

2回答

1620閲覧

excelで250kb以上のファイルをリネームさせず、msgboxで連絡したい。

NestRaven

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

0グッド

0クリップ

投稿2018/03/17 18:13

前提・実現したいこと

前提・実現したいこと

EXCEL 2013でマクロボタンで以下のことを実施したいと思います。
1「ファイルサイズを300kb未満であれば、2と3のマクロを実行」
2「名前を”yyymmdd-hhss_セルE1"にリネームする。」
3「マイドキュメントに保存する」
4「1で300kb以上ならmsgboxで「サイズが大きいので修正願います。」
としたいです。

2と3はさほど問題なくできました。
1ですが、調べても解決策が出てきません。
ご教示願います。

該当のソースコード

Option Explicit

Sub 日付と名前をつけて保存()

Dim Save_File, Save_Filename As String Dim file As String '----パスを含むファイル名--------- file = ActiveWorkbook.FullName '----シート、プロパティを選択。--------- Sheets("プロパティ").Select ActiveCell.Offset(1, 1).Range("A1").Select '---------ファイルサイズ--------- 'ファイルサイズはLOF関数を使用 Open ActiveWorkbook.Path & "\" & ActiveWorkbook.Name For Input As #1 Range("B5") = "ファイルサイズ(B)" Range("C5") = LOF(1) & "バイト" Range("B6") = "ファイルサイズ(KB)" Range("C6") = Format(LOF(1) / 1000, "おおよそ0.0KB") MsgBox file & vbCrLf & vbCrLf & "ファイルサイズは、" & Format(FileLen(file), "#,###") & " Byteです。", vbInformation, "FileLen" '名前を付け保存するファイル名の初期設定 Save_Filename = Format(Now(), "yyyymmdd-hhmm") & Range("B3") '「名前を付けて保存する」ダイアログボックスの表示 Save_File = Application.GetSaveAsFilename(Save_Filename, _ FileFilter:="Excelファイル,*.xlsx,すべてのファイル,*.*")

End Sub

補足情報(FW/ツールのバージョンなど)

ここから300kb以上ならMSG BOXに「ファイルサイズを小さくしてください。」
300kb未満なら”名前を付けて保存”ダイアログに進むようにしたいです、
サンプルはここにあります。
https://www.axfc.net/u/3896161

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

if 文を調べてください。

投稿2018/03/17 23:04

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NestRaven

2018/03/18 13:35

Range("C6") = Format(LOF(1) / 1000, "おおよそ0.0KB") If Range("C5") <= 77000 Then MsgBox file & vbCrLf & vbCrLf & "ファイルサイズは、" & Format(FileLen(file), "#,###") & " Byteです。", vbInformation, "FileLen" Else MsgBox file & vbCrLf & vbCrLf & "ファイルサイズオーバー " End If '名前を付け保存するファイル名の初期設定 と追加したのですが、結果にかかわらず保存ダイアログが開きます。
Zuishin

2018/03/18 13:39

C5 は数値でない上に Range だからでは?
NestRaven

2018/03/18 13:55

If Range("C5") <= 77000 Thenから If Cells(5, 3) <= 70000 Thenに変更しても保存ダイアログが 開いてしまいます。
Zuishin

2018/03/18 14:06

Value を使ってください。 あと文字列は数値ではありません。
NestRaven

2018/03/18 14:36

ありがとうございます。 Range("B5") = "ファイルサイズ(B)" Range("C5").Value = LOF(1) & "バイト" Range("B6") = "ファイルサイズ(KB)" Range("C6") = Format(LOF(1) / 1000, "おおよそ0.0KB") If Cells(5, 3).Value <= 70000 Then これですと、ファイルサイズオーバーの窓がでても「OK」を押したら保存ダイアログが出てしまうので、「cancel」ボタンを出して、処理を中止するマクロを組んだ方がよいのですが、旻がわかりません。ご指導ご鞭撻のほどお願い申し上げます。
Zuishin

2018/03/18 21:09

本気で言っていますか? if 文がどういう働きをしているかちゃんと調べて理解しましたか?
Zuishin

2018/03/18 23:25 編集

if 条件 then 処理1 処理2 処理3 処理n else 処理1 処理2 処理3 処理n end if
NestRaven

2018/03/19 13:38

ファイルサイズオーバー "の後に End が抜けていました。ありがとうございました。
guest

0

FileSystemObjecのFileオブジェクトにSizeプロパティがあります。
バイト単位の値を取得できます。

https://msdn.microsoft.com/ja-jp/library/cc428150.aspx

投稿2018/03/18 06:28

kakaru_yossy

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問