Excel2007VBAファイルの開き方について

このQ&Aのポイント
  • Excel2007VBAファイルの開き方について質問があります。
  • 質問内容は、Cドライブのフォルダにあるファイルを特定のコードで開こうとしたが、開くことができなかったことです。
  • 質問の要点は、なぜ開くことができないのか、開くためにはコードを書き換える必要があるのか、どのように書き換えれば良いのか、ということです。
回答を見る
  • ベストアンサー

Excel2007VBAファイルの開き方について

●質問の主旨 Cドライブのフォルダにあるファイルを下記コードで開こうとしましたが、 開くことができませんでした。 1.なぜ下記コードでは開くことができないのでしょうか? 2.開くためにはコードを書き換える必要があるのでしょうか? 3.書き換えるとすればどのように書き換えれば良いでしょうか? ご存知の方ご教示願います。私はVBA初心者です。 ●質問の捕捉 コードはあるVBAの参考書をまるまる引用したものです。 その説明として、 「該当ファイルの存在を予めチェックし、存在すれば開き、 存在しないときはメッセージを表示する」 とあります。 もちろん"C\data\test.xlsm"という場所、ファイルは予め用意しています。 ●コード Sub 存在するときだけ開く() myfile = "C\data\test.xlsm" If Dir(myfile) <> "" Then Workbooks.Open myfile Else MsgBox "ファイルが存在しません" End If End Sub

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> myfile = "C\data\test.xlsm" C:\data\test.xlsm じゃないですか? そうでないなら、相対パスで指定されているので、カレントディレクトリの影響を受けるでしょう。

dradra33
質問者

お礼

m-take0220様 ご回答ありがとうございます。 「:」を忘れていました。 「C:\data\test.xlsm」にしたら、指定のファイルを 開くことができました。

関連するQ&A

  • エクセルVBAでエラーが出る原因を教えて下さい

    Sub テスト() Workbooks("テスト1.xlsm").Worksheets("転記").Range("C3:J7").value = _ Workbooks("テスト1.xlsm").Worksheets("データ1").Range("C3:J7").value End Sub ↑これではデータ1シートのC3:J7の文字や数字だけが転記シートのC3:J7にコピーされるだけで、 セルの色や罫線、フォントの大きさや色、などの設定情報が無視されてしまいます。 なので、文字や数字だけでなく設定情報もコピーできるように ↑のコードを↓のコードに修正していました。 Sub テスト() Workbooks("テスト1.xlsm").Worksheets("転記").Range("C3:J7").PasteSpecial Paste:=xlPasteAll, _ Operation:=xlPasteSpecialOperationNone = _ Workbooks("テスト1.xlsm").Worksheets("データ1").Range("C3:J7").PasteSpecial Paste:=xlPasteAll, _ Operation:=xlPasteSpecialOperationNone End Sub しかし、エラーがでてしまいます。なぜなのでしょうか?

  • 【VBA】ファイルを開く→シートをコピー→保存

    VBAを使って、複数ファイルを一気に編集したいです。 あるフォルダ内に、複数のエクセルブックと VBAを登録したブックが入っています。 VBAの内容としては、 (1)フォルダ内のエクセルファイルをすべて開く (2)各ファイル1ページ目のシートを複製(コピー)する (3)上書き保存して閉じる (4)VBAを登録したブックを閉じる です。 下記のように書いてみたのですが、まったく動かないので どこが間違っているかのアドバイスをいただければと思います。 ----------------------------------------------------- Sub test() Dim Myfile, Filepath As String Filepath = ThisWorkbook.Path 'フォルダ名取得 Myfile = Dir(Filepath & "\") 'フォルダ内のファイル名取得 Do While Myfile <> "" Workbooks.Open Filename:=Filepath & "\" & Myfile Workbooks(Myfile).Activate Sheets(1).Select Sheets(1).Copy after:=Sheets(1) Workbooks(Myfile).Close SaveChanges:=True Myfile = Dir() Loop ThisWorkbook.Close SaveChanges:=True End Sub ----------------------------------------------------- よろしくお願いいたします。

  • VBAの更なる応用編

    度々すみません。 VBAで教えて下さい。 主ファイルYYYY.xlsmに下記の記述をしました。 副ファイルXXXX.xlsmがあります。 ------------------------------------------------- Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Workbooks("XXXX.xlsm").Close End Sub Private Sub Workbook_Open() Workbooks.Open Filename:= _ "XXXX.xlsm" Worksheets("Sheet1").Activate End Sub ------------------------------------------------- 以上で、YYYY.xlsmとXXXX.xlsmの場合、主、副の共に保存せずに 終了するにはどのようなコメントを追記したら良いですか。 ネットで調べた下記の内容は場所が悪いのか動作しませんでした。 Sub CloseWorkbook() Workbooks("XXXX").Close SaveChanges:= False End Sub

  • vba pdfを手前に開きたい  Shell

    Sub Sample() Dim myFile As String myFile = "C: \test.pdf" Shell """C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"" " & myFile End Sub vbaからこれでPDFファイルを開くことができるのですが アクセスの後ろで開いてしまいます。 このコードを実行したら、開いたPDFファイルを画面の手前に表示したいので 何を付け足せばいいのでしょうか?

  • Excel2007VBAファイルの表示について

    ●質問の主旨 開いたダイアロボックス内のファイルについてエクセルファイル(.xlsxのみ)を 対象としたいと考えています。 下記コードをどのように書き換えればよいでしょうか? ご存知の方ご教示願います。私はVBA初心者です ●質問の補足 作成した下記のコードでは 「実行時エラー1004:GetOpenFilenameメソッドに失敗しました」 と表示されます。 参考書2冊読んで全くその通りに引用していて、なぜエラー表示に なるのかよく分かりません。 またTarget = Application.GetOpenFilename("Excelブック,*,xlsx")を Target = Application.GetOpenFilename()にするとダイアロボックスは 表示され、その中にあるエクセルファイルは表示されます。 ●コード Sub Sample3() Dim Target As String Target = Application.GetOpenFilename("Excelブック,*,xlsx") If Target <> "False" Then Workbooks.Open Target Else MsgBox "キャンセルされました" End If End Sub

  • 他ファイルを参照するマクロ

    excel2010 check.xlsmというファイルにマクロが存在します。 このファイルは、c:\workフォルダに登録されている***A2***.xlsmというファイルからデータを抽出するマクロになっています。 ***A2***.xlsmの***は、ファイル名の中にA2という文字があり、 色々とファイル名が変化するということを意味しています。 ***A2***.xlsmのファイルにはチェックボックスがあり、名前を付けています。 _ch227173520_0002 が一例です。 check.xlsmのファイルで、いろんなファイルのチェックボックス状態を収集するマクロが 下記です。 Dim mypath As String Dim myFile As String '検索フォルダ mypath = "C:\work\" '検索ファイル名 myFile = Dir(mypath & "*A2*.xlsm") 'F列に抽出した結果を記載 Workbooks.Open mypath & myFile With Workbooks("check.xlsm").Worksheets("Sheet1").Range("F65536").End(xlUp) .Offset(0, 0).Value = myFile 'ファイル名 .Offset(63, 0).Value = Range("_ch227173520_0002").Value End With Workbooks(myFile).Close savechanges:=False このマクロでcheck.xlsmファイルのF64セルに、 100A2001.xlsmファイルのチェックボックス_ch227173520_0002の内容を抽出しています。 しかしながら、***A2***.xlsmファイルに仕様変更があり、チェックボックスの名前が変わってしまいました。 _ch227173520_0002 → _ch3131000 の様にです。 これだと、データを参照できないので実行エラーが出てしまいます。 なので、 .Offset(63, 0).Value = Range("_ch227173520_0002").Value → .Offset(63, 0).Value = Range("_ch3131000").Value とマクロを修正すれば、データは参照可能になりますが、 どのA2ファイルがどちらのチェックボックスなのかは、分かりません。 エラーが出たらcheck.xlsmのファイルを変えてやり直すというのは不便です。 チェックボックスの名前がどちらであっても .Offset(63, 0).Valueにデータを持ってくる様にしたいのですが、 どの様にしたらよいでしょうか? マクロ初心者です。 学習マクロくらいしかできないので、ベタで教えていただきたく、 よろしくお願いします。

  • VBA for Excel でファイルを条件付きで開く

    VBA for Excel で、開いているか開いていないか判らないファイルを開きたいと思い(ファイルは2つ、名前はGRT と GTATNO という変数に入っている)、下記のように書いてみましたが、Excel2000 ではエラーが起きるようです。 Sub ファイルを開く Dim hbook As Workbook AP = ActiveWorkbook.Path 'ファイルが開いていたら何もしない For Each hbook In Workbooks If hbook.Name <> GRT Then Workbooks.Open (AP & "\" & GRT) End If If hbook.Name <> GTANTO Then Workbooks.Open (AP & "\" & GTANTO) End If Next End Sub 原因は、そのときゲットした開いているファイル名(hbook.Name)がたまたま一致しないときにファイルを開こうとしてしまう、ということは判りました。 こうなると「2重に開こうとしている。開いて良いか?」のメッセージが表示され、それにNoと答えるとマクロがエラーを表示し、利用者は困ってしまうのですが、 どうしたらうまく動くマクロになるのかがわからず、悩んでいます。 ほとんど「組んでちょーだい」状態ですが、よろしくお願いいたしますm(_ _)m また職場でネットしているため、解答いただいた時間によってはお礼が8日(月)になってしまいますことを、予めお断りしお詫びしておきます。

  • ファイルが既に開いているかどうかを取得するには

    Sub Sample1() Dim App As Object Dim MyFileName As String Set App = CreateObject("Excel.Application") MyFileName = "C:\Users\test.xlsm" With App .Workbooks.Open Filename:=MyFileName .Visible = True If .ReadOnly Then MsgBox "既に開いています" App.Quit '既に開いているのなら、閉じる End If End With End Sub このようなコードを作ったのですが、どうやらIf .ReadOnly Thenの部分が間違っているようです。 エラーになります。 既にファイルが開いているか、読み取り専用かどうかを取得するコードをご教授ください。

  • VBA ファイルオープン

    EXCEL2007使用。 いつもお世話になっております。 素人ですが、宜しくお願いいたします。 Sheet上にファイルパスがあり、 それを変数にマクロでBOOKをオープンしたいのですが、、 下記のマクロでは実行時エラー'1004 「D:\TestBook\test.xlsmが見つかりません。ファイル名およびファイルの保存場所が正しいかどうか確認してください」 と表示されます。 Sheet2に下記   A  B      C   1         ファイルパス 2        -------------------- 3        D:\TestBook\test.xlsm 4        D:\TestBook\test2.xlsm 5        D:\TestBook\test3.xlsm ----------------------------------------------- Private Sub CommandButton8_Click() Dim MDate As String Dim i As Integer, Cnt As Integer '項目件数をカウント Cnt = Worksheets("sheet2").Cells(500, "C").End(xlUp).Row - 2 For i = 1 To Cnt DtName = Worksheets("sheet2").Cells(i + 2, "C") MDate = DtName Workbooks.Open Filename:=MDate AWBN = ActiveWorkbook.Name Application.DisplayAlerts = False 'メッセージを非表示にする Workbooks(AWBN).Close Application.DisplayAlerts = True Next i End Sub ------------------------------------------------------------------------- マクロ記録からコピーしたファイルパスなら正常に開けるのにですが・・・    マクロ記録のパス D:\TestBook\test.xlsm ○ sheet2のセルCにある D:\TestBook\test.xlsm × パス名に間違いはないと思います。また保存場所も間違いありません。 何かアドバイスいただける方、宜しくお願いいたします。

  • VBA フォルダ内のファイル名一覧

    下のようなコードですが、Dir("C:\見積\*.xls")の部分を このコードを書いてあるブックのあるフォルダの名前をもっと簡単に取得してコードにできないでしょうか。 もうひとつ付け加えたいこともあります。ファイル名一覧にする際、このブックと「XXX.xls」という名前のブック名以外の一覧にしたいのですが、これもお手上げですので、あわせてお願いします。 Sub test() Dim myFile As String Dim fl As Integer myFile = Dir("C:\見積\*.xls") fl = 9 Do While myFile <> "" fl = fl + 1 Cells(fl, 3).Value = myFile myFile = Dir() Loop End sub

専門家に質問してみよう