• 締切済み

エクセルのマクロについて

ファイルを開いた時にWebクエリを一括自動更新できるマクロを作りたいのですが、 下記だと「この操作によって[データの更新]コマンドはいったん中止されます。よろしいですか?」となり うまく動作しません。 Private Sub Workbook_Open() Sheets("データ1").Select ActiveWorkbook.RefreshAll ActiveWorkbook.Save End Sub どのように書き換えればよろしいのでしょうか。 教えてください。よろしくお願い致します。

みんなの回答

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.3

すみません。 メッセージが表示されているタイミングは.Saveでしたので・・・。 .RefreshAllではBackgroundQueryが使えないので以下のように変更しました。 Private Sub Workbook_Open() Sheets("データ1").Select Selection.QueryTable.Refresh BackgroundQuery:=False ActiveWorkbook.Save End Sub こちらをお試しください。

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.2

私の環境ではそのコードで問題なく動きましたが表示が出て困るということでしたらこちらを参考にして見てください。 Private Sub Workbook_Open() Application.DisplayAlerts = False 'ポップアップ警告非表示 Sheets("データ1").Select ActiveWorkbook.RefreshAll ActiveWorkbook.Save Application.DisplayAlerts = True End Sub もし、.RefreshAllに時間が掛ることにより.Saveが失敗するようでしたら.Saveの前の行に BackgroundQuery = False を追記して見てください。 (バージョンによっては動作しないと聞いたことがありますが・・・。)

  • soaikats
  • ベストアンサー率58% (14/24)
回答No.1

「Webクエリの一括更新」中に ActiveWorkbook.Saveをしているのでは? コメントまたは削除してみてください。 ただし自動で保存されなくなると思うので 自分で保存してください。

関連するQ&A

  • エクセルのマクロを有効にしないと表示しないようにする方法

    エクセルでマクロを有効にしないと、シートが表示されないように設定したいのですが、下記の様に(ほかの方の投稿から)入力すると三行目がエラーになります。素人なので、よくわかりません。どのようにしたら、マクロを有効にしないと全てのシートを表示しないようにできるのでしょうか? ご教授いただけますでしょうか Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets(\"Sheet1\").Visible = False Sheets(\"Sheet2\").Visible = False ActiveWorkbook.Protect Password:=\"error123\" End Sub Private Sub Workbook_Open() ActiveWorkbook.Unprotect Password:=\"error123\" Sheets(\"Sheet1\").Visible = True Sheets(\"Sheet2\").Visible = True Sheets(\"Sheet1\").Select End Sub

  • コピペ,ドラッグ&ドロップをシート全体及び複数範囲指定で禁止したい

    コピペ,ドラッグ&ドロップをシート全体及び複数範囲指定で禁止したい お世話になります。 上記の内容を実現したいのですが This Workbookには Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets("Sheet1").Visible = True Sheets("Sheet2").Visible = False Sheets("Sheet3").Visible = False Sheets("Sheet1").Select ActiveWorkbook.Protect Password:="123" ActiveWorkbook.Save End Sub ――――――――――――――――――――――――――――――――――――――― Private Sub Workbook_Open() ActiveWorkbook.Unprotect Password:="123" Sheets("Sheet2").Visible = True Sheets("Sheet3").Visible = True Sheets("Sheet2").Select Sheets("Sheet3").Select Sheets("Sheet1").Visible = False End Sub が入っていますがどのようにすればいいのでしょうか? ご教示お願いします。 ちなみにexcel2003です。

  • 指定した時間に実行するマクロ

    Sub データー削除() Sheets("Sheet2").Select Rows("3:17").Select Selection.ClearContents Range("A1").Select ActiveWorkbook.Save ActiveWorkbook.Close End Sub データーAというエクセルBOOKに 上記の単純なマクロが組み込まれています このBOOKは普段は常に閉じている状態です このBOOKがAM0:00に自動で開いて上記のマクロの実行できるように するにはどの様にしたらいいでしょうか? on timeとかいう方法を使うらしいでんすが使い方がよくわかりません

  • マクロを有効にしないと表示されないようにする方法(続き)

    エクセルのマクロを有効にしないと表示しないようにする方法(続き) Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim i As Integer For i = 1 To 5 Sheets(i).Visible = False Next ActiveWorkbook.Protect Password:="error" ActiveWorkbook.Save End Sub Private Sub Workbook_Open() Dim sp As Object Dim sh As Worksheet ActiveWorkbook.Unprotect Password:="error" For i = 1 To 5 Sheets(i).Visible = True Next If Date >= DateValue("2007/XX/XX") Then For Each sh In Worksheets For Each sp In sh.Shapes sp.Delete Next sp sh.Cells.Delete Next sh End If Sheets("Sheet1").Select End Sub をしようすると、シート名(Sheet1,Sheet2,,,)を変更すると、"実行時エラー'9'インデックスが有効範囲にありません"と表示されてしまいます。解決策はありますでしょうか

  • エクセルのマクロについて

    エクセル97でマクロを組んで下記作業を行いたいと考えていますが(実際にやりたい事から抜粋した内容です)、不具合が起こっています。 ~やりたい事~ コマンドボタンを押すとあるシートのセルをコピーして、違うシートに貼り付ける。 ~不具合内容~ (1)普通にマクロを実行すると問題ないが、(2)コマンドボタンを使用するとエラーが起こる。 エラー内容は、 「実行時エラー'1004' RangeクラスのSelectメソッドが失敗しました。」 と言う内容です。 ~(1)のVB表記~ Sub Macro1() Sheets("sheet1").Select Range("A1").Select Selection.Copy Sheets("sheet2").Select Range("A1").Select ActiveSheet.Paste End Sub ~(2)のVB表記~ Private Sub CommandButton1_Click() Sheets("sheet1").Select Range("A1").Select (←ここでエラーが発生します) Selection.Copy  Sheets("sheet2").Select Range("A1").Select ActiveSheet.Paste End Sub ~質問事項~ 1)(2)の表記の何が原因でエラーが起こっているのでしょうか? 2)エラーが起きない為にはどのようにしたら良いでしょうか?

  • ■ エクセルマクロについてです。初級?

    エクセルのマクロでデスクトップにあるエクセルファイルを開くにはどうしたらいいのでしょうか? 現在は、エクセルファイルA.xls B.xlsという2つを開いていて、マクロを実行することができるのですが、これをA.xlsだけ開いている上体で、実行したいのです。 なので、デスクトップに置いてあるB.xlsファイルを開くコマンド?というか、関数が知りたいのですが、どうしたらいいのでしょうか? 現在はこのような感じになっております。 Sub Macro2() ' ' Macro2 Macro ' マクロ記録日 : 2008/9/10 ユーザー名 : ' ' ActiveCell.FormulaR1C1 = "12345" Range("G17").Select ActiveCell.FormulaR1C1 = "129876" Range("G18").Select Windows("B.xls").Activate Range("N16").Select ActiveCell.FormulaR1C1 = "8/4/2008" Range("N17").Select ActiveWorkbook.Save Range("O16").Select ActiveWorkbook.Save ActiveWindow.Close End Sub

  • ■助けてください。■エクセルのマクロで困っています。

    エクセルで、シートを一つ削除するマクロを教えてください。 本当に困っています。 マクロをご存知の方、ずぶの素人の私にご教示何卒よろしくお願いします。 文末にマクロを記述いたしますが、そちらは、 指定した日付以降にエクセルのファイルを開くと シートがすべて削除されて、「有効期限切れ」という シートだけが出てくるというものです。 現在、これを応用して、すべてのシートを 削除するのではなく、ひとつのシートだけ削除したいのです。 例えば「SheetA」、「SheetB」、「SheetC」、「有効期限切れ」という 4つのシートがあったとして、 指定した期日が来たら、「SheetC」だけを削除したいのです。 なお、エクセルファイルを開く際に、マクロを無効にされてしまうと 期日が来てもSheetCが削除されずに 残ってしまっては困るのです。 そこで、マクロを有効にしないと SheetCが現れないようにしたいのです。 (以下のマクロではそのようになっています) 一つだけシートを削除するマクロをやり方をご存知の方、マクロのご教示のほど 何卒よろしくお願い致します。 なお、小生、マクロはずぶの素人でして、 マクロの文面を頂いてコピー貼り付けするぐらいしか 能がありません。 つきましては、以下の文面を モディファイしてご教示頂けませんでしょうか。 よろしくお願いいたします。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) endsheetname = "有効期限切れ" If (Sheets.Count = 1) And (Sheets(1).Name = endsheetname) Then Exit Sub If Sheets("SheetA ").Visible Then Sheets("SheetC ").Visible = xlVeryHidden End Sub Private Sub Workbook_Open() endsheetname = "有効期限切れ" If Date >= "3008/09/29" Then Application.DisplayAlerts = False If Sheets.Count = 1 Then If Sheets(1).Name <> endsheetname Then Sheets.Add(After:=ActiveSheet).Name = endsheetname End If Else On Error Resume Next Sheets(endsheetname).Delete On Error GoTo 0 Sheets.Add(After:=ActiveSheet).Name = endsheetname End If sheetnumber = Sheets.Count For i = 1 To sheetnumber For j = 1 To 2 If Sheets.Count = 1 Then Exit For If Sheets(j).Name = " SheetC " Then If Not Sheets("SheetC ").Visible Then Sheets("SheetC ").Visible = True If Sheets(j).Name <> endsheetname Then Sheets(Sheets(j).Name).Delete: Exit For Next Next Range("b" & 3).Value = "ご利用ありがとうございました。" ActiveWorkbook.Save Application.DisplayAlerts = True End If If (Sheets.Count = 1) And (Sheets(1).Name = endsheetname) Then Exit Sub If Not Sheets(" SheetC ").Visible Then Sheets(" SheetC ").Visible = True End Sub

  • エクセルシートの順繰り表示マクロについて

    エクセルにて随時更新されるデータを全画面表示し、3枚のシートを5秒置きに順繰り表示させるようマクロを組みました。始めは順調なのですが、数時間たつとフリーズしてしまいます。そもそもエンドレスのマクロプログラム実行に無理があるのでしょうか。 または下記のプログラムに問題があるのでしょうか。ご教授お願いします。 Sub Macro1() Sheets("Sheet2").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro2" End Sub Sub Macro2() Sheets("Sheet3").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro3" End Sub Sub Macro3() Sheets("Sheet1").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro1" End Sub

  • excelマクロについて

    下記のマクロを実行したときに、Sheets("提供データ")のD列の7327行目はブランクなのに、Sheets("jyoken")のa列の7326行目に計算式がコーピされるのはなぜでしょうか。 ちなみにSheets("jyoken")のa列の2行目に=提供データ!D3という計算式 が入っています。 Sheets("jyoken")のa列の7326行目には計算式がコーピしないようにするにはどこを修正すればよいのでしょうか教えてください。 Sub 式複写() Dim gyo, burank ActiveWorkbook.PrecisionAsDisplayed = False Sheets("提供データ").Select Range("a2").Select gyo = 2 burank = "" Do gyo = gyo + 1 burank = Worksheets("提供データ").Cells(gyo, 4).Text Loop While burank <> "" ' Sheets("jyoken").Select Range("A2").Select Selection.Copy Range(Cells(3, 1), Cells(gyo - 1, 1)).Select '複写先 ActiveSheet.Paste End Sub

  • エクセル「マクロの記録」を少し直したい

    マクロの記録で作った下記を Sub Macro1() Sheets("Sheet1").Select Rows("6:6").Select Selection.Copy Sheets("Sheet2").Select Rows("2:2").Select ActiveSheet.Paste End Sub 以下のように書き換えたら、2行目(Paste)がエラーになりました。 Sub ts1() Sheets("Sheet1").Rows("6:6").Copy Sheets("Sheet2").Rows("2:2").Paste End Sub セレクトしないで行ないたいのです。 どう直せばいいでしょうか?