
Excelのマクロの不具合について教えてください。
マクロを連続して実行すると一部のマクロがエラーが出て実行できません。
解決方法を教えてください。
マクロ
Sub 審査結果3()
Application.Run "行調整"
Application.Run "青紙日付"
Application.Run "審査結果"
Application.Run "シート移動"
If Worksheets("審査").Range("S19") = "計画変更" Then
Application.Run "審査資料計変"
End If
Application.Run "上書き保存表示無し"
End Sub
があります。このマクロを実行すると上から順番にマクロが実行されます。
しかし、途中マクロ「Application.Run "審査資料計変"」にエラーが出てこのマクロだけ実行できません。
コードは
Sub 審査資料計変()
Dim TargetFile As String
Dim fPath As String, fName As String
Dim newfName As String
newfName = ThisWorkbook.Sheets("審査").Range("S22").Value & ".pdf"
newfName = NGNarrowToWide(newfName)
''メッセージを表示し、実施確認する。
If MsgBox(newfName & vbCrLf & vbCrLf & "審査資料(計変)を作成しますか。", vbExclamation + vbOKCancel) <> vbOK Then Exit Sub
' ファイルのパスを指定
fPath = ThisWorkbook.Path
' ダイアログを表示してファイルを選択
TargetFile = Application.GetOpenFilename("PDFファイル ,*.pdf", , "ファイルを選択", , False)
If TargetFile = "False" Then Exit Sub
' ファイル名を変更
If TargetFile = fPath & "\" & newfName Then
MsgBox "同名ファイルを選択しています"
Exit Sub
End If
If Not Dir(fPath & "\" & newfName) <> "" Then
Name TargetFile As fPath & "\" & newfName
Else
Dim rc As Integer
rc = MsgBox("既に存在する名前です" & vbCrLf & "はいを押すと既存ファイルは削除され" & vbCrLf & "リネームファイルに置き換えられます", 52, "置き換え確認")
If rc = vbYes Then
Application.DisplayAlerts = False
Kill fPath & "\" & newfName
Name TargetFile As fPath & "\" & newfName
Application.DisplayAlerts = True
Else
MsgBox "処理を中止しました"
End If
End If
End Sub
Public Function NGNarrowToWide(ByVal stg As String) As String
stg = Replace(Replace(Replace(Replace(stg, "\", "¥"), "/", "/"), ":", ":"), "*", "*")
stg = Replace(Replace(Replace(Replace(stg, "?", "?"), "<", "<"), ">", ">"), "|", "|")
stg = Replace(stg, """", Chr(&H8168))
NGNarrowToWide = stg
End Function
になっており、画像のようなエラーメッセージが出て、
コードの内「Name TargetFile As fPath & "\" & newfName」の部分が黄色くなっております。
このマクロの前の「Application.Run "審査結果"」のマクロを実行したPDFファイルを
Application.Run "審査資料計変"マクロを使用してファイル名を変更するようになっております。
解決方法を教えてください。
よろしくお願いします。
No.5
- 回答日時:
そうですか・・エラーにならないのですね
では
MsgBox TargetFile
MsgBox fPath & "\" & newfName
Stop
を
MsgBox TargetFile
MsgBox fPath
Stop
では どのように表示されますか
No.4
- 回答日時:
>ご指示の通りに設定しましたが、やはり「Stop」を設定した状態と同じになります。
これは単独でSub 審査資料計変()を実行した場合も同じと言う意味ですか
最初に Microsoftexcel 「ok」と出て
それを「ok」をクリックすると「Microsoftexcel」¥審査資料(計変).pdf「ok」と出てます。
------
' ファイルのパスを指定
fPath = ThisWorkbook.Path が取得できていない?
追加してみてください
On Error GoTo 0 '追加
' ファイルのパスを指定
fPath = ThisWorkbook.Path
No.3
- 回答日時:
Sub 審査結果3()とSub 審査資料計変()は同じブックにあるのですよね?
Application.Run "審査資料計変"
を
Call 審査資料計変 としてみてください
ちなみにThisWorkbookはどこにあるのかな・・・
単独で実行した時のメッセージボックスの表示は?
No.2
- 回答日時:
今一度VBEを開きイミディエイトウィンドウに表示されている
値を確認してみてください
もしくは
Exit Sub '処理を中止し終了
を
Stopに変えるか
Debug.Print TargetFile
Debug.Print fPath & "\" & newfName
Exit Sub '処理を中止し終了
を
MsgBox TargetFile
MsgBox fPath & "\" & newfName
Stop
にして確認してください
補足のコードについては分かりませんが
>と記載がありますが、どのような事でしょうか?
>全く理解できなくて申し訳ありません、
https://oshiete.goo.ne.jp/qa/13519233.html
の事でした
No.1
- 回答日時:
ご質問者様の処理は複数の継ぎ合わせVBAで構成され関数やブックも継ぎ合わせですね
全体の構成、処理手順は回答者には想像できません
従って解決方法は自身でデバッグする事です
とは言え 回答者として可能性を考えるに
>Application.Run "審査資料計変"を単独で実行すると上手く実行できます。
これは、Application.Runでなくプロシージャを単体で実行と言う事ですか
Application.Runを使用していると言う事は
fPath = ThisWorkbook.Path は希望の処理でない可能性があります
fPath = ActiveWorkbook.Path とするべきかも知れませんが違うかも知れませんね
自身でもう少し原因を調べる方法ですが
VBEでブレイクポイントなどで変数を確認出来ますが・・
と言っても分からないのでしょうから
エラーの出る場所を下記のように
3行書き足しイミディエイトウィンドウに出力された文字列を確認してください Debug.Printをmsgboxとして表示することもできるかと
If Not Dir(fPath & "\" & newfName) <> "" Then
Debug.Print TargetFile
Debug.Print fPath & "\" & newfName
Exit Sub '処理を中止し終了
Name TargetFile As fPath & "\" & newfName
出力されたパスを確認してください
あと・・・
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "PDFファイル(.pdf)", "*.pdf"
.InitialFileName = ThisWorkbook.Path
If .Show Then
TargetFile = .SelectedItems(1)
Else
Exit Sub
End If
End With
にしないのかな・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
Excel_マクロ_現在開いているシ...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで特定の列が0表示の場...
-
Excel2013 VBA マクロ実行中に...
-
エクセルで縦に並んだデータを...
-
Excel マクロでShearePoint先の...
-
エクセル VBA実行中のApplicati...
-
マクロの連続印刷が突然不可能...
-
TERA TERMを隠す方法
-
エクセル マクロの同時実行に...
-
エクセルで別のセルにあるふり...
-
マクロとは?(PCあまり詳しく...
-
【Excel】複数のマクロをまとめ...
-
WORD テキストボックスを全ペ...
-
オートフィルターとExcelマクロ...
-
Excel マクロのゴミの消し方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
一つのTeratermのマクロで複数...
-
Excel_マクロ_現在開いているシ...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
エクセルで別のセルにあるふり...
-
ExcelVBAでPDFを閉じるソース
-
ダブルクリックで貼り付けた画...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
マクロ実行時、ユーザーフォー...
-
Excelのセル値に基づいて図形の...
-
特定文字のある行の前に空白行...
-
エクセルマクロでワードの一ペ...
-
エクセルで縦に並んだデータを...
-
Excel VBAからAccessマクロを実...
おすすめ情報
画像が送れませんでした。画像のエラーは
実行時エラー’75’:
パス名が無効です。 と表示されます。
又、If Not Dir(fPath & "\" & newfName) <> "" Then
Name TargetFile As fPath & "\" & newfName
Else
Dim rc As Integer
のコードにエラーが出ております。
尚、Application.Run "審査資料計変"を単独で実行すると上手く実行できます。
連続してマクロを実行し、PDFファイルを作成し、そのファイルの名前を変更するようになっておりますので、変更するファイルが存在しない、となっているのでしょうか。
解決方法をよろしくお願いします。
いつも回答ありがとうございます。
ご指示の通り、
If Not Dir(fPath & "\" & newfName) <> "" Then
Debug.Print TargetFile
Debug.Print fPath & "\" & newfName
Exit Sub '処理を中止し終了
Name TargetFile As fPath & "\" & newfName
を設定しましたが
エラーのメッセージボックスが開かず、そのまま、ブックがクローズしてしまい。
ファイル名も変更されておりませんでした。
もう一つの
あと・・・
と記載がありますが、どのような事でしょうか?
全く理解できなくて申し訳ありません、
よろしくお願いします。
pdfファイルを作成するマクロです
Sub 審査結果()
Application.ScreenUpdating = False
Call output_pdf(ThisWorkbook.Path, "審査", Worksheets("審査").Range("Z1").Text)
Application.ScreenUpdating = True
ActiveWorkbook.Save
With CreateObject("Forms.TextBox.1")
.MultiLine = True
.Text = Worksheets("審査").Cells(15, "E").Value
.SelStart = 0
.SelLength = .TextLength
.Copy
End With
Call 電子管理システム
Application.Quit
With ThisWorkbook
.Saved = True
End With
End Sub
Sub output_pdf(PA As String, sh_name As String, f_Name As String)
On Error GoTo SaveError
Worksheets(sh_name).Activate
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=PA & "\" & f_Name & ".pdf"
Exit Sub
SaveError:
MsgBox ("保存先パス、対象シート名、保存ファイル名が適切ではありません")
Application.ScreenUpdating = True
Application.Quit
End Sub
文字数の関係上 3つに分けてお送りしました、。
よろしくお願いします。
ご連絡ありがとうございました。
ご指示の通りにコードを設定しましたら
多分画像が送る事が出来ないと思いますので、最初に Microsoftexcel 「ok」と出て
それを「ok」をクリックすると「Microsoftexcel」¥審査資料(計変).pdf「ok」と出てます。
okをクリックするとファイル変更されずにクローズされます。
ちなみにマクロ審査結果で作成したファイル「23068847-1 【担当者】 質疑書№1.pdfのファイルを
マクロ「"審査資料計変"
」を実行して
Worksheets("審査").Range("S19") に表示されている「審査資料(計変)」に変更るるように
しています。
よろしくお願いします。
何度もありがとうございます。
ご指示の通りに設定しましたが、やはり「Stop」を設定した状態と同じになります。
Sub 審査結果3()とSub 審査資料計変()は同じブックにあります。
又、ThisWorkbookは 一番最初のフォルダは○○邸新築工事となっており、
その下のサブフォルダに
「検査時必要図書(正本)」「返却用(副本)」の2つのフォルダがあります。
ThisWorkbookは「検査時必要図書(正本)」の中にあり、又、マクロ審査結果で作成し、変更しようとしているpdfファイルも「検査時必要図書(正本)」の中にあります。
本当に何度も申し訳ありません。
何卒、よろしくお願いします。
何度も申し訳ありません。
ご指示のコードを
''メッセージを表示し、実施確認する。
If MsgBox(newfName & vbCrLf & vbCrLf & "審査資料(計変)を作成しますか。", vbExclamation + vbOKCancel) <> vbOK Then Exit Sub
On Error GoTo 0 '追加
' ファイルのパスを指定
fPath = ThisWorkbook.Path
設定しましたが、やはり、最初に Microsoftexcel 「ok」と出て
それを「ok」をクリックすると「Microsoftexcel」¥審査資料(計変).pdf「ok」と出てます。
Sub 審査資料計変()を単独に実行した場合は、上手く行きます。
よろしくお願いします。
何度もありがとうございます。
ご指示の通りにコードを設定しましたら
最初に Microsoftexcel 「ok」と出てその後も
Microsoftexcel 「ok」と出ています。
よろしくお願いします。
何度もありがとうございました。
fPath = ActiveWorkbook.Path
に変更しましたら、先ほどとおなじ、2回メッセージが出てしまいます。
今回の補足でもう補足が出来なくなりますので、改めて質問をさせて頂きます。
よろしくお願いします。