エクセルファイルをダイヤログを表示させて名前を付けて保存したいのですが、
以下のコ-ド、' A列の最終行の数字を取得
lastRow = ThisWorkbook.Sheets(1).Cells(ThisWorkbook.Sheets(1).Rows.Count, 1).End(xlUp).Valueの部分で型が一致しませんとエラーメッセージが出ます。
エラーメッセージを出さずに保存するにはどこを修正すればよいのでしょうか?
どなたかご教示願います。
よろしくお願いいたします。
Sub ファイル保存()
Dim folderPath As String
Dim fileName As String
Dim dateStr As String
Dim c3Content As String
Dim d3Content As String
Dim e3Content As String
Dim f3Content As String
Dim customName As String
Dim lastRow As Long
Dim formattedF3Content As String
Dim formattedCombinedContent As String
' 保存先フォルダのパスをダイアログで選択
folderPath = "C:\Users\t-tai\OneDrive\デスクトップ\図番"
' A列の最終行の数字を取得
lastRow = ThisWorkbook.Sheets(1).Cells(ThisWorkbook.Sheets(1).Rows.Count, 1).End(xlUp).Value
' 今日の日付を文字列に変換
dateStr = Format(Date, "yyyymmdd")
' 各セルの内容を取得
c3Content = ThisWorkbook.Sheets(1).Range("C3").Value
d3Content = ThisWorkbook.Sheets(1).Range("D3").Value
e3Content = ThisWorkbook.Sheets(1).Range("E3").Value
f3Content = ThisWorkbook.Sheets(1).Range("F3").Value
' F3セルの内容をフォーマット(4桁の内容があるが左から2行目の後に-を挿入)
If Len(f3Content) >= 4 Then
formattedF3Content = Left(f3Content, 2) & "-" & Mid(f3Content, 3, 2)
Else
MsgBox "F3セルの内容が正しくありません。4桁の内容を含めてください。"
Exit Sub
End If
' C3、D3、E3、F3セルの内容をフォーマット
formattedCombinedContent = c3Content & "-" & d3Content & "-" & e3Content & "-" & formattedF3Content
' カスタムファイル名を作成
customName = dateStr & "(" & formattedCombinedContent & ")他" & lastRow & "件"
' ファイルの保存先パスを作成
fileName = folderPath & "\" & customName
' ファイルを保存
With Application.fileDialog(msoFileDialogSaveAs)
.Title = "保存先フォルダを選択してください"
.InitialFileName = fileName & ".xlsm"
.AllowMultiSelect = False
If .Show <> -1 Then
MsgBox "保存先フォルダが選択されませんでした。", vbExclamation
Exit Sub
End If
.Execute
MsgBox "ファイルが保存されました。", vbInformation
End With
End Sub
No.1ベストアンサー
- 回答日時:
>A列の最終行の数字を取得
かかれているコードだと、A列最終行のセルの値(内容) を取得しています。
例えば最終行が50だった場合、lastRowにはセルA50の値が入ります。
それでよい場合は、
lastRow = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Value
で取得できます。
ただ、lastRowは先にlong型が宣言してありますが、その上で型に関するエラーが出ているところを見ると、あなたが取得したいのは、セルの値(内容)ではなく、行数(先の例でいうならば50)ではないかと思いますが、いかがでしょうか?
その場合は、
lastRow = ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
となります。
補足として、繰り返しシートオブジェクトである、ThisWorkbook.Sheets(1)を毎回書くのは面倒なので、オブジェクト変数にしておいた方が良いと思います。
Set WS = ThisWorkbook.Sheets(1)
とすればよいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) xmlドキュメントから別拡張子で保存したい 4 2023/09/12 11:08
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) Excel VBA マクロ あるフォルダー内の複数のファイルを統合したいです 1 2024/02/19 21:37
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBA 1 2024/02/03 22:51
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
VBA一覧取得 再投稿
Visual Basic(VBA)
-
VBA 複数条件の分岐処理の上手な方法
Visual Basic(VBA)
-
エクセルについて
Visual Basic(VBA)
-
-
4
vba 削除
Visual Basic(VBA)
-
5
Excel-VBAのmsgBox()の不思議
Visual Basic(VBA)
-
6
VBA listBoxから
Visual Basic(VBA)
-
7
VBAで大量のファイルをシート名ごとに転記やらいろいろしたい!
Visual Basic(VBA)
-
8
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
9
Excel VBA 定義されたプロージャ名、関数名の取得
Visual Basic(VBA)
-
10
VBA 複数のエクセルから一つのエクセルに貼り付ける
Visual Basic(VBA)
-
11
VBAに詳しい方教えてください。
Visual Basic(VBA)
-
12
Vba SelStart、SelLen教えてください教えてください
Visual Basic(VBA)
-
13
VBAなくなるの?
Visual Basic(VBA)
-
14
VBA レジストリの値の読み方について教えてください
Visual Basic(VBA)
-
15
ExcelのVBAコードについて教えてください。
Visual Basic(VBA)
-
16
VBA指定行削除
Visual Basic(VBA)
-
17
VBAの計算で@が出てしまう件
Visual Basic(VBA)
-
18
Excelで「Ctrl+c」、「Ctrl+v」等をまとめた物
Visual Basic(VBA)
-
19
【ExcelVBA】インデックスが有効範囲にありません。の理由が分かりません
Visual Basic(VBA)
-
20
WORD VBA プログラム修正をお願いします。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBScriptでのSaveAsについて
-
タイトルバーやメニューバーの...
-
Excel VBAでほかのアプリケーシ...
-
読み取り専用ファイルを上書き...
-
ExcelVBAでデスクトップのPATH...
-
Excel VBAで作成したマクロをxl...
-
ファイルのダウンロード保存先...
-
.NETアプリでパスワード等入力...
-
【Excel VBA】自動的にバックア...
-
VBAで、強制保存してブックを閉...
-
Pivot table で集計されたデー...
-
VBScriptで日本語が変です
-
コマンドプロンプトでデスクト...
-
ASPでファイルを保存するダイア...
-
vbaでIEの名前を付けて保存(A)...
-
onedriveで同期解除をしたら、...
-
USBデータの消失
-
vlan internal allocation poli...
-
移動先にないファイルのみをコ...
-
TXTファイルを上書き保存する前...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAについて
-
読み取り専用ファイルを上書き...
-
Excel VBAでほかのアプリケーシ...
-
Excel VBAで作成したマクロをxl...
-
VBAで、強制保存してブックを閉...
-
コマンドプロンプトでデスクト...
-
ExcelVBAでデスクトップのPATH...
-
VBScriptで日本語が変です
-
vbaでIEの名前を付けて保存(A)...
-
Corel Digital Studioの動画をS...
-
エクセルで「名前を付けて保存...
-
タイトルバーやメニューバーの...
-
CImageのファイル名を指定して保存
-
webページの特定の部分だけ消し...
-
Pivot table で集計されたデー...
-
VBA メモ帳の上書き保存がしたい
-
VB.NETでEXCELファイルを開き、...
-
EclipseでJavaScriptファイルの...
-
VBScriptでのSaveAsについて
-
エクセル:マクロ:保存時に連...
おすすめ情報