• ベストアンサー

excell2007におけるVBAの変更点

次のvbaがexcell2007ではエラーとなります。どうしてなのでしょうか。 If Workbooks(fileName$).ReadOnly = True Then またこのようなことが掲載されているwebまたは本を教えていただきたく思っています。 よろしくお願いします。

  • oc8
  • お礼率75% (15/20)

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.1

>次のvbaがexcell2007ではエラーとなります エラーが出たらそのメッセージを提示した方が的確な回答が寄せられると思います。 ただ、提示のコードは2007でも問題なく使用できると思いますよ。 変数filename$ にセットされてるファイルが 指定のフォルダーに存在しないとか ファイル名が間違っているのではありませんか。 また、2007で作成したファイルは以前のバージョンとすれば 拡張子が変わっていますがそのあたりはどうでしょうか。   それからfilename$の$は無理に付けなくても。。。 それに、filenameという変数名はopenメソッドなどの引数に使用されてますので避けた方がベターだと思います。  

oc8
質問者

お礼

ありがとうございました。 他のPCで実験したところ動きました。

関連するQ&A

  • VBA

    VBAでstrFILENAMEにaaa.xlsを代入したいのですがどうしたらいいのでしょうか? このままだと定義エラーになっていまします。 Dim wbk As Workbook Set wbk = Workbooks.Open(Filename:="C:\Documents and Settings\Administrator\デスクトップ\strFILENAME", ReadOnly:=True)

  • サーバー上のブックを開けない時(エクセルVBA)

    ネットワーク障害などでサーバー上のエクセルブックが開けない時、かなり待たされてから次のメッセージが出ます。 実行時エラー'1004' 'Open'メソッドは失敗しました。'Workbooks'オブジェクト しかもその間、Ctrl-Breakも受け付けてくれません。 正確に待ち時間は計ったわけではありませんが、10分くらいでしょうか。 なんとかこれを回避して、早い時間にエラーメッセージを出してコントロールを戻すことはできないでしょうか? 以下のVBAでオープンしています。 Workbooks.Open Filename:=myFileName, Readonly:=True よろしくお願い申し上げます。

  • vba で全てのエクセルファイルを開く処理

    お世話になります。 下記のVBAソースで、特定のフォルダにあるエクセルを全て 開く処理をしているのですが、スマートに行えているか 疑問に思いました。 具体的には、「'''''''''時間がかかっている??」箇所で 無駄なこと・時間がかかっていないか疑問です。 目的としては、「vba で全てのエクセルファイルを開く処理」ですので、 (1)皆さんがされている「vba で全てのエクセルファイルを開く処理」 (2)下記ソースの「'''''''''時間がかかっている??」は時間がかかっていないか の、どちらかで、結構ですのでご返事頂ければ有り難いです。 宜しくお願いします。 ------------ソース----------------- ChDir (ThisWorkbook.Path & "\" & フォルダ) fileName = Dir("*.xls") 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) End If End If fileName = Dir() Loop

  • エクセルVBAで共有ファイル読込時の競合を感知できますか?

    職場ネットワークで、エクセルのファイルの共有を しています。 誤ったファイル名を指定した場合は、次のVBAで メッセージを出せますが、他の人が同一ファイルを 既に開いていることを、VBAでどのように検出 すればよいのでしょうか。(当方VBA素人です) On Error Resume Next Workbooks.Open Filename:=PathName & "\" & FileName If Err.Number <> 0 Then x = MsgBox("ファイルが見つかりません", vbOKOnly) End If

  • エクセル VBA 読み取り専用になっているファイルを開く場合

    エクセルVBAを取り組んでいるのですが、 "A"のファイルでマクロを作動させて、"B"のファイルを開くマクロを組んでいます。 その時に誰かが"B"のファイルを開いていた場合強制的に読み取り専用で開いてしまいます。 読み取り専用で開こうとした場合には、マクロを停止させるようにしたいのですが、どういう形にしたら良いでしょうか? ちなみに"B"ファイルを開いているマクロを下に乗せておきますので、変更しなければならない等がありましたら、教えていただけますと幸いです。 For Each wb In Workbooks If InStr(wb.Name, "B") > 0 Then flag = True Next wb If flag = True Then Else Workbooks.Open Filename:="Z:\B.xls" End If

  • VBAの書き方

    VBA初心者です。 EXCEL2007を使っています。 いま、下記のような書き方で、 1.セル(A1)をダブルクリックしたら「Z:\管理\01.xlsx」を開く 2.セル(A2)をダブルクリックしたら「Z:\管理\02.xlsx」を開く ・ ・ ・ n.セル(An)をダブルクリックしたら「「Z:\管理\0n.xlsx」を開く という動きをしたいと考えています。 わからないまま、WEBサイトで見つけた書き方を下記のように書き換えて試してみました。 一つではうまくいきますが、二つ目の設定をすると・・・ 添付画像のように、「コンパイルエラー 名前が適切ではありません」と出てしまいます。 WEBで調べた限りでは、 「Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)」 の部分が同じ名前がエラーの原因のように思えますが、どうしてよいかわかりません。 よろしくお願いします。 -------------------------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$A$1" Then Exit Sub Cancel = True ChDir "Z:\管理\" Workbooks.Open Filename:="Z:\管理\01.xlsx" End Sub Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$A$2" Then Exit Sub Cancel = True ChDir "Z:\管理\" Workbooks.Open Filename:="Z:\管理\02.xlsx" End Sub

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

    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でファイルを閉じる時に、他のエクセルファイルを閉じるには?

    VBAで、 Private Sub Workbook_Open() Workbooks.Open FileName:="バス時刻表.xls",ReadOnly:=True End Sub で、バス時刻表.xlsを自動的にオープンした後、 閉じる時に、 Private Sub Workbook_BeforeClose(Cancel As Boolean) Workbooks("バス時刻表.xls").Close End Sub で記述したら、エラーとなります。 どのようにすればいいのでしょうか? よろしくお願いします。

  • Excelのブック間の串刺し計算について

    Excelのブック間の串刺し計算について VBA超初心者です。同じフォルダ内にファイルがいくつかあり、同じ形式で、sheet1のB4のセルに計があったとして、それをブック間で串刺し集計したいのですが、うまくいきません。どこが悪いのかもわからず、困り果ててます。ご指導お願いします。 Sub BookShuukei() Dim FileName As String Dim Total As Integer Dim OpenedBook As Workbook Dim IsBookOpen As Boolean FileName = Dir("*.xls") Application.ScreenUpdating = False 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) End If Total = Total + Workbooks(FileName).Sheets(1).Range("B4").Value If IsBookOpen = False Then Workbooks(FileName).Close End If End If FileName = Dir() Loop Application.ScreenUpdating = True MsgBox (Total) End Sub

  • VBA 1004 エラー

    前月まで動いたVBAが 今月下記デバックのエラーがでてしまいましたが、どのようなエラーか分かりません。 どなたか教えてください。 microsoft365に切り替わっていますが、そのせいでしょうか Workbooks.OpenText Filename:=ThisWorkbook.Path & "\" & DnTxFl, _ Origin:=932, StartRow:=1, DataType:=xlFixedWidth, _ FieldInfo:=Array(Array(0, 1), Array(794, 1), Array(1000, 1)), TrailingMinusNumbers:=True

専門家に質問してみよう