
VBA初心者なのですが、VBAでエクセルブックを開くとVBAの処理が終わってしまいます。理由がわからないのでアドバイスをお願いします。なお、止まってしまう箇所にコメントを入れプログラムを下記しました。また、4000字以上質問できないためプログラムの途中までしか書かれていません。そのため、余分な宣言が多数ありますが無視してください。よろしくお願いいたします。
Option Base 1
Sub 健康診断の郵送()
Dim kyoNum() As String
Dim b_name As String
Dim a_name() As Variant
Dim b_address As String
Dim a_address() As Variant
Dim mailNum() As Variant
Dim place() As String
Dim banchi() As String
Dim ken() As String
Dim Adr As String
Dim AdrLen As Integer
Dim i, j, k, cnt, l, m As Integer
Dim ChrCode As Integer
Dim cell As Range
Dim Book1 As String
Dim wb As Workbook
Dim Book1_Path As String
Dim flag As Boolean
'セルのクリア
ThisWorkbook.ActiveSheet.Cells.ClearComments
'セルのプロパティを設定をする
With ThisWorkbook.ActiveSheet.Columns("A:B")
.ShrinkToFit = True
.NumberFormatLocal = "@"
.ColumnWidth = 45
End With
'カレントディレクトリのチェンジ(Windows2000以降)
CreateObject("WScript.Shell").CurrentDirectory = ThisWorkbook.Path
'簡易名称Book1にする
Book1 = "Book1.xlsx"
'パスを取得する
Book1_Path = ThisWorkbook.Path & "\" & Book1
If Dir(Book1_Path) = "" Then
MsgBox "Book1.xlsxファイルが存在しません。", vbExclamation
End If
'同名ブックのチェック
For Each wb In Workbooks
If wb.Name = Book1 Then
MsgBox "健康診断の郵送.xlsmはBook1を開こうとしています" _
& vbCrLf & "Book1を閉じて再実行してください", vbExclamation
Exit Sub
End If
Next wb
Application.ScreenUpdating = False
'画面の更新を止める
Workbooks.Open Book1_Path '*****←ここで処理が終わってしまう*****
'ブック名を指定して非表示
Application.Windows("Book1.xlsx").Visible = False
'後方検索でBook1.xlsxの入力済みセルの行数と列数を取得
With Workbooks("Book1.xlsx").ActiveSheet.UsedRange
Book1_MaxRow = .Find("*", , xlValues, , xlByRows, xlPrevious).Row - 2 'データ入力済み行数取得
End With
Application.ScreenUpdating = True
Workbooks("Book1.xlsx").Activate
j = 1
ReDim kyoNum(Book1_MaxRow)
ReDim a_name(Book1_MaxRow)
ReDim a_address(Book1_MaxRow)
ReDim mailNum(Book1_MaxRow)
ReDim ken(Book1_MaxRow)
ReDim place(Book1_MaxRow)
ReDim banchi(Book1_MaxRow)
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
>なお、止まってしまう箇所...
ここで、エラーメッセージが出て止まってしまうという意味ですか。
何というエラーメッセージでしょう?
実行時エラー1004なら、存在しないBookを開こうとしていませんか?
MsgBox "Book1.xlsxファイルが存在しません。"
の表示後に Exit Sub でマクロ終了処理をしていませんから
Bookが存在しない場合でもマクロ継続してしまうような記述になっています。
確認してください。
また、目的のSheetが必ずActiveになっている保障があるなら
ActiveSheet指定で良いかもしれませんが、再考の余地ありです。
それにCurrentDirectory変更の必要性もハテナです。
Book1_MaxRow を得るところまでをまとめてみると以下のような感じかと。
Sub try()
Dim wb As Workbook
Dim r As Range
Dim Book1 As String
Dim Book1_Path As String
Dim Book1_MaxRow As Long
With ThisWorkbook.ActiveSheet
.UsedRange.ClearContents
With .Columns("A:B")
.ShrinkToFit = True
.NumberFormatLocal = "@"
.ColumnWidth = 45
End With
End With
Book1 = "Book1.xlsx"
Book1_Path = ThisWorkbook.Path & "\" & Book1
If Dir(Book1_Path) = "" Then
MsgBox "Book1.xlsxファイルが存在しません。", vbExclamation
Exit Sub
End If
For Each wb In Workbooks
If wb.Name = Book1 Then
MsgBox "健康診断の郵送.xlsmはBook1を開こうとしています" & vbCrLf _
& "Book1を閉じて再実行してください", vbExclamation
Set wb = Nothing
Exit Sub
End If
Next wb
Application.ScreenUpdating = False
Set wb = Workbooks.Open(Book1_Path)
wb.Windows(1).Visible = False
'Book1_MaxRow = wb.ActiveSheet.UsedRange.Find("*", , xlValues, , xlByRows, xlPrevious).Row - 2
Set r = wb.ActiveSheet.UsedRange.Find("*", , xlValues, xlPart, xlByRows, xlPrevious)
If r Is Nothing Then
MsgBox "ActiveSheetのデータ要確認"
wb.Windows(1).Visible = True
wb.Activate
Else
Book1_MaxRow = r.Row - 2
End If
Application.ScreenUpdating = True
Set r = Nothing
Set wb = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダ内の全ブックのシート...
-
EXCEL VBA起動時の処理
-
フォルダ内の全ブックのシート...
-
VBAでファイル名を変更したい
-
同じ名前で拡張子が違うファイル
-
VBAでEXCELのワークシートを削...
-
【ExcelVBA】指定の書式で、マ...
-
excelマクロ、任意セルの値で名...
-
エクセル2007で、Application.R...
-
すでに開いているブックのマク...
-
フォルダ内の全てのBookに同じ...
-
EXCELマクロでxlsとxlsxを開く方法
-
Excelマクロ ファイル名が変わ...
-
複数のデータ系列の線の太さを...
-
【マクロ】宣言は、何のために...
-
Word用のマクロが急に働かなく...
-
エクセルでツールバーに「縮小...
-
海外の印刷所を使って入稿する...
-
ファイル名を今日の日付、時刻...
-
個人用マクロブックについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAで今開いているユーザ...
-
フォルダ内の全ブックのシート...
-
エクセルVBA Workbook変数に変...
-
VB2010でExcelの行をコピーして...
-
フォルダ内の全ブックのシート...
-
【ExcelVBA】指定の書式で、マ...
-
EXCELマクロでxlsとxlsxを開く方法
-
excelマクロ、任意セルの値で名...
-
【Excel VBA】ブックを複数開い...
-
すでに開いているブックのマク...
-
フォルダ内の全てのBookに同じ...
-
VBA セル入力された日付データ...
-
VBAでEXCELのワークシートを削...
-
VBA、Excelのworkbook.open に...
-
Excel VBAを後ろで動かす方法
-
[Excel VBA] フォルダ内の複数...
-
EXCEL VBA起動時の処理
-
excelでハイパーリンク 別ブッ...
-
エクセルVBAでブックを開くと処...
-
他のBookのユーザー定義関数を使う
おすすめ情報