[[20180521111411]] 『ExcelVBAのエラーについて』(ゆゆゆ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ExcelVBAのエラーについて』(ゆゆゆ)

エラーについての質問です。。
2つそれぞれに以下の部分でエラーと表示されてしまいます。。
実行したい内容、問題の箇所はそれぞれ以下の部分です。

超初心者で、どこをどう修正していいのか分かりません。。
どの部分で修正が必要なのか、教えていただけないでしょうか。。

<sample1>

内容:「サンプルマクロ.xlsm」の「表紙」シートのA4に記載したパスのフォルダに保存している
.xlsx形式のファイルを開いて、アクティブシートをマクロファイルにコピー。
開いたファイルは閉じる。フォルダ内のすべてのファイルで繰り返す。

エラー箇所:Workbooks.Open (FileName)
→ファイル形式またはファイル拡張子が正しくありません。

<sample2>
内容:マクロファイルの2シート目をコピーして、
マクロファイルを保存しているフォルダに、
「表紙」シートA29に入力しているファイル名かつxlsx形式で保存する。

エラー箇所:ActiveWorkbook.SaveAs FileName:=myFile
→'SaveAs' メソッドは失敗しました: '_Worksheet' オブジェクト

※どちらも、セルに記載したフォルダパス、ファイル名を
 引用したいのですが、そこも上手くいきません。。


Sub sample1()
    Dim FileName As String
    Dim OpenedBook As Workbook
    Dim IsBookOpen As Boolean

filepath = Sheets("表紙").Range("A4").Value
FileName = Dir("*.xlsx")

    Do While FileName <> ""
        If FileName <> ThisWorkbook.Name Then
            IsBookOpen = False
            For Each OpenedBook In Workbooks
                If OpenedBook.Name = FileName Then
                    IsBookOpen = True
                    Exit For
                End If
            Next
            If IsBookOpen = False Then
                Workbooks.Open (FileName)
                  cnt = Workbooks("サンプルマクロ.xlsm").Sheets.Count
  ActiveSheet.Copy _
      After:=Workbooks("サンプルマクロ.xlsm").Sheets(cnt)
Workbooks(FileName).Close SaveChanges:=False
            End If
        End If
        FileName = Dir()
    Loop
    Sheets("表紙").Select
 End Sub


 Sub sample2()
Dim xSheet As Worksheet
Dim myFile As String
Dim myName As String
Set xSheet = Sheets("表紙")
 ThisWorkbook.Worksheets(2).Copy
myFile = ThisWorkbook.Path & "\" & xSheet.Range("A29").Value & ".xlsx"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FileName:=myFile
Application.DisplayAlerts = True
ActiveWorkbook.Close
End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 ブレイクポイントを設定するかMsgBox関数を使って開く直前のFileNameを確認してはどうか。
 あと、本題とは関係ないが
 >If FileName <> ThisWorkbook.Name Then
 ThisWorkbookはマクロのあるブックになるので.XLSMか.XLSになり必ず一致しないことになると思うが。

(ねむねむ) 2018/05/21(月) 13:46


ねむねむさん、コメントありがとうございます!!

>ブレイクポイントを設定するかMsgBox関数を使って開く直前のFileNameを確認してはどうか。
こちらですが、超素人のため自分ではどこをどうしたらよいのかわかりませんでした。。
どの部分にどのような処理を入れるべきなのか、再度教えていただけないでしょうか。。
(ブレイクポイントもMsgBox関数もまだ使ったことがありません。。)

 >>If FileName <> ThisWorkbook.Name Then
 >ThisWorkbookはマクロのあるブックになるので.XLSMか.XLSになり必ず一致しないことになると思うが。
こちらもありがとうございます!!こちらはもう一度考えなおしてみます・・!
(ゆゆゆ) 2018/05/22(火) 16:45

 >Workbooks.Open (FileName)
 (本来ここのカッコはいらない)
 この前に
 MsgBox FileName
 を入れて置きFileNameがどんな値になっているかを確認する。
 問題を解決する方法ではなく、何が問題になっているかを調べるための手段。
(ねむねむ) 2018/05/23(水) 10:02

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.