• ベストアンサー
  • 困ってます

エクセルVBA

こんばんは! エクセルマクロ初心者です。 エクセルVBAについて教えてください! パス(?)を指定して、ファイルを開けてから実行する マクロを書きたいのですが、エラーになってしまいます。 Dim Filename as string (1)Workbooks.Open Filename:= "\D\MyDocument\●●.xls" (●●はファイル名) (2)Workbooks("●●").Activate (1)の部分は実行されて目的のファイルは開くのですが(2)でエラーになってしまいます。 どなたか教えてください! 以前までは、このマクロ実行できていたのですが、突然できなくなりました。 困ってます。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数207
  • ありがとう数3

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

  • ベストアンサー
  • 回答No.3
  • papayuka
  • ベストアンサー率45% (1388/3066)

> で表現したのですが、実際は会社のファイル用のサーバー上にあります。 > サーバーの設定とかも関係あるのでしょうか? 意味が掴めないのですが、、、 拡張子の問題は実行するPCの設定によって起こると思います。 拡張子を非表示にしたPCで Workbooks("Book1").Activate はOK 拡張子を非表示にしたPCで Workbooks("Book1.xls").Activate もOK 拡張子を表示にしたPCで Workbooks("Book1").Activate はNG 拡張子を表示にしたPCで Workbooks("Book1.xls").Activate はOK なお、Workbook型の変数にセットしてから操作するとその後の操作が楽になります。 Sub Test() Dim wb As Workbook  Set wb = Workbooks.Open("フルパス")  MsgBox "ブック名は " & wb.Name  MsgBox "フルパスは " & wb.FullName  MsgBox "最初のシート名は " & wb.Worksheets(1).Name  MsgBox "シートの数は " & wb.Worksheets.Count  MsgBox "閉じます"  wb.Close End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 変数の宣言型にWorkbookというものがあるなんて知りませんでした。 勉強になりました! 今後も使いたいマクロなので、これを機にキチンと書き直します!

関連するQ&A

  • エクセルVBA インデックスが有効範囲にありません

    エクセルVBA初心者です。 共有サーバーに置いたエクセルファイルを開いたときに、同フォルダにある、別のデータ保存用エクセルファイルのデータをコピーしてくるようにしました。 しかし、「インデックスが有効範囲にありません」のエラーになります。 ChDir "\\共有サーバー\Aフォルダ\" Workbooks.Open Filename:= _ "\\共有サーバー\Aフォルダ\データ保存.xls" Windows("データ保存.xls").Activate Sheets("データ貼り付け").Select ここでエラーになります→ Windows("データ保存.xls").Activate エラー時、データ保存.xlsは開いた状態(Activate)になっており、開いた後に見つからない状態?になっているのでしょうか。 ちなみに Windows("データ保存.xls").Activate をスルーさせると、次のSheets("データ貼り付け").Select で同様のエラーになります(当たり前かな)。 試しに、記録マクロで動作を記録してコードを確認しましたが、 Windows("データ保存.xls").Activate となっており、違いがありません。 原因を教えていただければありがたいです。 よろしくお願いします。

  • VBAでフォルダにあるエクセルファイルを開く

    こんにちは このコードがうまく動かないのですが、 どこがいけないのかわからなく助けてください。 なおフォルダの中には******データ.xlsと言うファイルがあり、アスタリスク部分は日付が不規則に変化して上書きされるのです。 このファイルを開くマクロを作りたいのですが。 うまく行きません。 よろしくおねがいします。 Sub excelopen() ' ' Dim エクセル As String 'エクセル = Dir(ActiveWorkbook.Path & "\*データ.XLS") If エクセル = "" Then Exit Sub エクセル = ActiveWorkbook.Path & "\" & エクセル Workbooks.Open Filename:=エクセル End Sub

  • Excelファイル内の検索マクロがエラーになってしまいますので、その解

    Excelファイル内の検索マクロがエラーになってしまいますので、その解決方法を教えて戴きたいと思います。 (ExcelのVer.はPCによって異なり2002と2003です) 現在3つのExcelシートがありまして、内訳は ・検索.xls : 検索文字列入力用、マクロ実行用 ・文字列が含まれない.xls : データベース(検索文字列が含まれない) ・文字列が含まれる.xls : データベース(検索文字列が含まれる) となっております。 (デバッグの為にデータベースは意図的に作成しております) ここで『検索.xls』のマクロで以下のように作成をしてみました。 Sub 検索() Dim SearchWord As String Workbooks("検索.xls").Activate SearchWord = Worksheets("Sheet1").Cells(1, 1) ' 検索.xlsのSheet1のA1に検索文字入力 Workbooks.Open Filename:="D:\文字列が含まれない.xls" Windows("文字列が含まれない.xls").Activate Cells.Find(What:=SearchWord).Activate Workbooks.Open Filename:="D:\文字列が含まれる.xls" Windows("文字列が含まれる.xls").Activate Cells.Find(What:=SearchWord).Activate End Sub しかし、このマクロを実行しますと『文字列が含まれない.xls』の処理でエラーになってしまいます。 この『文字列が含まれない.xls』の処理をコメントアウトしますと『文字列が含まれる.xls』の処理はちゃんと実行してくれますので、データベースに検索文字が無かった場合の処理のさせかたが問題だとは思うのですけど、ネット検索をしても、上手なキーワードが思い浮かばずに欲しい情報がヒットしてくれません。 なにか単純な問題だと思うのですけれども、Excelにお詳しいかたがいらっしゃいましたら、回避策を教えて戴きたいと思います。

その他の回答 (2)

  • 回答No.2
  • papayuka
  • ベストアンサー率45% (1388/3066)

Workbooks("●●").Activate  ↓ Workbooks("●●.xls").Activate にしては? 拡張子を付けた場合、拡張子の表示・非表示のどちらになっていてもOKですが、拡張子無しで指定した場合は、エクスプローラの設定によってエラーになったような。。。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お答えありがとうございます! 私のPCのエクスプローラの設定は確か拡張子表示になってます。 (1)は例えで "\\D\Mydocuments\●●.xls" で表現したのですが、実際は会社のファイル用のサーバー上にあります。 サーバーの設定とかも関係あるのでしょうか? 重ねての質問で申し訳ありません!

  • 回答No.1

Workbooks("●●.xls").Activate だと思いますが? ファイルの拡張子まで指定してください。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

さっそくのお答えありがとうございます! 今、エクセルの入ったパソコンではないので明日会社でやってみます! その後のオブジェクト全部 Workbooks("●●"). で書いてしまいました。 全部修正し直しですよね? 今まで実行されてたのは何故でしょう? 重ねての質問でごめんなさい! でも、お答えいただけたら嬉しいです。

関連するQ&A

  • VBAで複数のエクセルファイルを自動圧縮

    VBAで複数のエクセルファイルを自動圧縮 お世話になります。 以下サイトなどを参考にVBAでエクセルファイルの圧縮をさせようとしています。 ダイアログで圧縮したいファイルを指定して圧縮するところまではできました。 http://oshiete.hmv.co.jp/qa5155002.html ■やりたいこと 特定のフォルダにある複数のファイルを個別に圧縮して、それぞれzipファイルとしたい。 圧縮するファイルを指定するダイアログは出さずに、自動化したい。 ■VBAの記述 Dim Filename As String Dim strArchiveName As String Dim strCommand As String Dim RC As Long Dim hWnd As Long Dim strOutPut As String * 512 Dim lngSize As Long Dim strPassWord As String strPassWord = "pass" 'ハンドル取得 hWnd = FindWindow("XLMANI", Application.Caption) '★ファイル名取得★ Filename = Application.GetOpenFilename("*.xls(*.xls),*.xls") If Filename = "False" Then Exit Sub Filename = Mid$(Filename, InStrRev(Filename, "\") + 1) strArchiveName = Mid$(Filename, InStrRev(Filename, "\") + 1, InStrRev(Filename, ".") - InStrRev(Filename, "\") - 1) & & ".zip" strCommand = "-uP " & strPassWord & " " & strArchiveName & " " & Filename lngSize = Len(strOutPut) RC = Zip(hWnd, strCommand, strOutPut, lngSize) ■質問  ファイル名を毎回変えて繰り返し処理すればいいと考えてますが、  圧縮するファイルを指定するダイアログを消すことができません。。。  ファイル名を以下のように直接指定しましたが、以下エラーが出てしまいます。  VBAで取得したファイル名で圧縮するような記述の仕方があればご教示いただけると助かります! '★ファイル名取得★ Filename = Application.GetOpenFilename("*.xls(*.xls),*.xls") If Filename = "False" Then Exit Sub   ↓以下に変更したがエラー  Filename = "C:\" & "test.xls" ←とりあえずファイル名を固定で指定したつもり。。  ●イミディエイトに表示されるエラー   zip warning: name not matched: test.xls   zip warning: test.zip not found or empty

  • エクセルVBAでの呼出操作をマクロ化するには?

    エクセルVBAでの呼出操作をマクロ化するには? エクセル2000です。宜しくお願いします。 VBAで、ファイルを呼び出したいのですが、Workbooks.openの書き方が良く分かりません。 呼び出すファイル名は決まっていなくて、フォルダ名は固定です。 エクセルの操作で言うと、ファイルを開くを押して、フォルダを選ぶとこまでをマクロかしたいのですが。 例えば、ドライブDの「作業用」フォルダを開きたい場合は、どう記述すれば宜しいでしょうか? 基礎的な部分でお恥ずかしいのですが、以下で実行しても動かんのです。 ChDir "D:\作業用" Workbooks.OpenText Filename:= "D:\作業用\*.*"

  • OutlookからExcelをひらく

    いつもお世話になっております。 OutlookのマクロからExcelファイル(ファイル名="sample")を開くために以下のようなマクロを組みましが、 "実行時エラー'424'; オブジェクトが必要です。" というメッセージが出てエラーになってしまいます。 Workbooks.Open FileName:="C:\Documents and Settings\My Documents\sample.xls" ヘルプを見たのですがよくわかりませんでした。 Outlookのマクロを実行してExcelファイルを開くにはどのようにすればよいのでしょうか。 よろしくお願いします。

  • EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる

    EXCELのVBAでマクロを使ってファイルを開こうとしている際、指定したファイルが存在しなかった場合、普通はマクロのエラーが出て「ファイルが存在しません」となりますが、指定したファイルが存在しなかった場合には、メッセージボックスを表示させ、そこで処理を中止させるか、または、その無いファイルの処理は飛ばして次のファイルの処理を行う用にさせることはできるでしょうか? Sub test1() Workbooks.Open Filename:="C:\Documents and Settings\001.xls (001が存在しない場合メッセージボックスを出しマクロを中止するか次の002を開くか選ぶ) Workbooks.Open Filename:="C:\Documents and Settings\002.xls End sub

  • EXCEL VBA セルからファイル名を読み込む

    EXCEL VBAについての質問です 同じ処理を名前の違う複数のファイルで行いたいと思っています そこで、セルA2へファイル名の『○○.xls』○○部分だけをそれぞれのファイルに書き込んでおき、マクロは共通にしてファイル名をそれぞれのファイルから読み込んで実行したいと思っています。 良い方法を教えてください。 Workbooks("200809.csv").Activate Sheets("200809").Select Range("C3:C33").Copy Windows("○○.xls").Activate'←ここをファイルにあわせて変更できる形にしたい Sheets("報告書").Select Range("G5:G35").Select ActiveSheet.Paste Windows("200809.csv").Activate Range("K3:K33").Copy Windows("○○.xls").Activate’←ここ Sheets("報告書").Select Range("I5:I35").Select ActiveSheet.Paste Workbooks("200809.csv").Close SaveChanges:=False よろしくお願いします。

  • VBAでのファイルの開き方について

    いつもお世話になっております。(エクセル2010を使用) エクセルVBAを学習中の者です。 ダイアログボックスを表示してファイルを開く・・・というコードを記述しているのですが、分からない点があるためご指導をお願いします。 Sub Sample1() Dim openFileName As String openFileName = Application.GetOpenFilename filefilter:="Microsoft Excelブック,*.xls?" Workbooks.Open Filename:=openFileName End Sub を実行するとコンパイルエラーの構文エラーが表示されます。 Sub Sample2() Dim openFileName As String openFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") Workbooks.Open Filename:=openFileName End Sub を実行すると正常に動作します。 私の現在の知識ではSample1も正常に動作するはずなんですが・・・ (※コードはVBEをコピペしています) 両者の違いはなんでしょうか?(※スペルの間違いは無いとは思いますが・・・) どうぞよろしくお願いいたします。

  • Excelマクロでyyyymmddの変数

    Excelのマクロで他のファイルを呼び出す際、当日や前日(ファイル名:yyyymmdd.xls)のファイルを指定したいのですが、変数を指定する方法を教えてください。 Workbooks.Open Filename:="C:\WINDOWS\デスクトップ\20040215.xls"←これを変数にしたい

  • エクセルのVBAについて

    エクセルのVBAについて教えて下さい。 エクセルのVBAでプログラムを組んでいるのですが、一つわからないことがあるのです。 マクロが実行(オープン)されるファイル名(ファイルパス)をVBAで取得するためにはどうすればいいでしょうか? たとえば、マクロが実行されるファイルがC:\テスト.xlsならば "C:\テスト.xls"を取得したいと考えています。 どなたかご教授お願い致します。 宜しくお願い致します。

  • VBAが得意な方 助けてください Rangeについて

    入門書を読みながらVBAを勉強しています。 3日以上繰り返して、ぜんぜんすすみません。困っています。お願いします。ご協力お願いします。 コードの内容は (1)マクロから別のエクセルファイルを開く (2)開いたファイルのシート1を選択 (3)Endプロパティを使ってRange("A65536")から上にジャンプするものです。 本に書いてあったコード通りうち実行しても4行目で以下のエラーメッセージが表示されます。 --出るエラー-- 実行時エラー'1004 'RangeクラスのActivateメソッドが失敗しました。 --使っているコード-- Application.DisplayAlerts = False Workbooks.Open Filename:= "C:\1班.xls" Worksheets("Sheet1").Select Range("A65536").End(xlUp).Activate 使っているものはExcel2000です。 ご協力お願いします。

  • ワードのマクロからエクセルシートを開きデータを読み込む

    ワードマクロからエクセルシートのデータを読み込みたいのですが、マクロを実行すると「コンパイルエラー:変数が定義されていません。」というエラーが出てしまいます。変数xlUpで引っかかってるようなんですが、どのように定義すればよいですか? コードは以下です。 Dim Workbooks As Object Dim ecell As Integer Workbooks.Open FileName:="namesheet.xls" ecell = Workbooks("namesheet.xls").Worksheets(1).Range("B100").End(xlUp).Row よろしくお願いいたします。