- ベストアンサー
Excel2007でエラーになるマクロ
NaoDorryの回答
新規でファイルを作って図形を挿入し、ActiveWorkbook.Close のみでマクロを登録、実行しても落ちます。 これはセキュリティレベルの問題ではなく2007のバグっぽいですね~ 以前のバージョンでもcloseメゾットのバグはあったようですし。 http://support.microsoft.com/kb/418779/ja?spid=1741&sid=880 いろいろ試してみましたが2つ以上のファイルを開いている場合は正常に動作するようです。 解決策としては ・図形じゃなくてVBのボタンにする ・オブジェクトの挿入でMicrosoftWord図で同じシェイプを選択すれば見た目上は全く同じで、問題なく動きます。 ・Workbooksをカウントして1つならダミーファイルを開き、元ファイルをclose (正しダミーファイルは開いたままなので意味ないですね・・・) 難題を解決するのは楽しくて好きなので、いろいろ試したんですが挫折しました(汗 コードで対応できるいい解決策がありそうな気がしてなんとなくスッキリしません。
関連するQ&A
- VBA シート指定とファイル名入力
部署ごとに分割し、ブックで保存するコードです。 sheet名は「部署」です。 Sub macro1() Dim w As Worksheet Dim n As Long Dim r As Long Dim s As String Dim WSH As Variant Dim myPath As String Set w = ActiveSheet n = Worksheets.Count Application.ScreenUpdating = False On Error GoTo errhandle For r = 5 To w.Range("B65536").End(xlUp).Row s = w.Cells(r, "B") w.Rows(r).Copy Worksheets(s).Range("B65536").End(xlUp).Offset(1, -1) Next r On Error GoTo 0 Set WSH = CreateObject("Wscript.Shell") myPath = ActiveWorkbook.Path & "\1\" For r = Worksheets.Count To n + 1 Step -1 Worksheets(Worksheets.Count).Copy ActiveSheet.Columns.AutoFit ActiveWorkbook.SaveAs Filename:=myPath & ActiveSheet.Name ActiveWorkbook.Close False Application.DisplayAlerts = False Worksheets(Worksheets.Count).Delete Application.DisplayAlerts = True Next r w.Select Exit Sub errhandle: Worksheets.Add after:=Worksheets(Worksheets.Count) ActiveSheet.Name = s w.Rows(1).Copy Range("A1") w.Rows(2).Copy Range("A2") w.Rows(3).Copy Range("A3") w.Rows(4).Copy Range("A4") Resume Application.ScreenUpdating = True End Sub (1)sheet1にマクロ実行ボタンを配置し、部署seedにマクロ実行命令をする。 (2)sheet1のB2セルにファイル名を入力して、そのファイルに保存する。(例部署ファイル) (1)Dim w As Worksheets("部署")と変更したのですが、エラーが出ました。 (2)myPath = ActiveWorkbook.Path & "\部署ファイル\" ↑ これをsheet1のB2セルから指定できるようにしたいです。 宜しくお願いします。
- ベストアンサー
- Visual Basic
- 一部マクロを変更したいので教えてください。
現在、下記のようなマクロを使用しています。 Sub sample() Dim myFile As String, myPath As String, i As Long Application.ScreenUpdating = False myPath = InputBox("フルパスでフォルダーを指定") myFile = Dir(myPath & "\*.xls", vbNormal) Do Workbooks.Open myPath & "\" & myFile For i = 1 To ActiveWorkbook.Sheets.Count If WorksheetFunction.CountA(Sheets(i).Range("B7:B11")) = 0 Then Sheets(i).Range("B7") = "*" End If Next ActiveWorkbook.Close True myFile = Dir() Loop While myFile <> "" Application.ScreenUpdating = True MsgBox "完了 !!" End Sub 上から4行目のmyPath = InputBox("フルパスでフォルダーを指定")を パスを入力するマクロではなくてもっと簡単にフォルダを選択するマクロに変更したいのですが どうすればいいですか?
- ベストアンサー
- オフィス系ソフト
- エクセル、マクロの事で・・・?(2)
昨日、質問した者です。 http://okwave.jp/qa/q7374907.html 以下のマクロを教えてもらいました。 昨日の質問では、エクセルのA列にフォルダ名、B列にファイル名、それぞれフォルダとtxtを出力するマクロを教えてもらいました。 そこでもう一つ質問があるのですが、C列の内容をテキストに出力する場合はどうすればいいのでしょうか? 度々の質問で申し訳ありませんが、教えていただけないでしょうか? よろしくお願いします。 sub macro1() dim myPath as string dim h as range on error resume next mypath = thisworkbook.path worksheets(1).select for each h in range("A1:A" & range("A65536").end(xlup).row) mkdir mypath & "\" & h.value open mypath & "\" & h.value & "\" & h.offset(0, 1).value & ".txt" for output as #1 close #1 next end sub
- ベストアンサー
- オフィス系ソフト
- Excel2007のマクロでエラーが発生
初心者です。Excel2007で住所録を作り、特定の条件の人だけ抽出しようと考え、以下のマクロを実行すると、「オブジェクトが見つかりません」というエラーが表示されてしまいます。どう修正したら良いのでしょうか? Sub Adfilter10() Dim dRng As Range, eRng As Range, cRng As Range Set dRng = Worksheets("入力用").Range("A1").CurrentRegion 'データリスト Set dRng = Worksheets("入力用").Range("M1:M2") '条件範囲 Set eRng = Worksheets("印刷用").Range("A1") '抽出先 eRng.CurrentRegion.ClearContents dRnge.AdvancedFilter_ Action:=xlFilterCopy, _ CriteriaRange:=cRng, _ CopyToRange:=eRng, _ Unique:=False End Sub
- 締切済み
- オフィス系ソフト
- excel マクロ PDF化の際のエラーについて
エクセルブックを一括で名前をつけてpdfに変換するようなマクロを作ろうとして作ってみました。 基本は、マクロで印刷を一気に行う要領でpdfをアクティブプリンタに設定したのですが、見かけ上pdfファイルが作成されるものの、開くと破損していますとなってしまい、きちんとpdf化が出来ていないようです。 システムフォントを利用~のエラーは回避できたのですが、無理やりファイル名を指定しているせいでこのようになっているのでしょうか。 お手数ですがアドバイスをお願いします。 マクロの記録ではアクティブプリンタを指定して、プリントアウトというものしか記録されないので、プリントアウトのところが何か間違っているとは思うのですが・・・ 以下コードです。 Sub PrtPDF() Dim MyFile As String, MyPath As String Dim wb As Object Dim fn As String If vbNo = MsgBox("フォルダ内のブックの一括印刷を行いますか?", vbYesNo) Then GoTo CloseFile Dim bookname1 As String bookname1 = "Conv.xls" MyPath = ThisWorkbook.Path & "\" '自分のパスを取得 MyFile = Dir(MyPath & "*.xls", vbNormal) 'パス内のxlsファイル If LCase(MyFile) = LCase(bookname1) Then MyFile = Dir 'MyFileとbookname1が同じファイルの場合スキップする Do Until MyFile = "" '対象ファイルがなくなるまで Set wb = Workbooks.Open(MyPath & "\" & MyFile) '選択したファイルを開く fn = MyPath & "PDF\" & Range("J4").Value & ".pdf" 'アクティブシートを印刷する。 Application.ActivePrinter = "Adobe PDF on Ne07:" ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, PrtoFileName:=fn 'アクティブブックを閉じる。 ActiveWorkbook.Close MyFile = Dir '次のファイルを検索 If LCase(MyFile) = LCase(bookname1) Then MyFile = Dir 'MyFileとbookname1が同じファイルの場合スキップする Set wb = Nothing Loop '繰り返し GoTo ProcessEnd CloseFile: ActiveWorkbook.Close MsgBox "処理を中止しました。" Exit Sub ProcessEnd: MsgBox "処理が終了しました" End Sub
- 締切済み
- Visual Basic
- マクロを組むとこんなエラーが出るようになりました
捺印君:Vel 1.25→(エクセルのフリーソフトです) PicturesクラスのPasteプロパティを取得出来ません。 予期せぬエラーが発生しました。 とエラーが出ます。 ちなみに組んでいるマクロは下記です Sub 全シートの保護() Dim Sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each Sh In Worksheets Sh.Protect Password:=myPassword Next End Sub Sub 全シートの解除() Dim Sh As Worksheet Dim myPassword As String myPassword = InputBox("パスワードを入力してください", "パスワード") For Each Sh In Worksheets Sh.Unprotect Password:=myPassword Next End Sub このマクロがおかしいからエラーが出るんですよね? 違うマクロにすれば問題ないでしょうか? ちなみにマクロは「全シートの保護一括解除」と「一括保護」で パスワード付きの物をとなっております。
- ベストアンサー
- Windows系OS
- EXCEL2010エラーVBA
下記を実行するとエラーになりEXCEL2010が終了してしまいます。 fDebug:0 offset00009391 がエラーメッセージです。 何が原因でしょうか。 Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet Dim rg As Range Dim r As Variant Dim c As Long Dim hanni1 As Range Dim atai As Range Set ws = Worksheets("あああ") Set rg = Worksheets("コード").Range("A1:B10") r = ws.Cells(Rows.Count, 1).End(xlUp).Row Set hanni1 = ws.Range(Cells(2, 2), Cells(r, 3)) Set atai = ws.Range(Cells(2, 3), Cells(r, 3)) atai = Application.VLookup(hanni1, rg, 2, False) End Sub
- ベストアンサー
- その他(プログラミング・開発)
- ワークブックを開くマクロが動きません。
D列7行目のセル以降に記入したワークブックを次々と開きたいと思い、マクロを書いてみたのですが、実行時エラー424、オブジェクトが必要ですとのメッセージが出力され、ブックが開きません。 どこを修正すればよろしいでしょうか?アドバイスを頂けないでしょうか。 || D | 7行||テスト1| 8行||テスト2| 9行||テスト3| Sub ワークブックオープン() '■変数設定 Dim Mypath As String, x As Integer, MycelNO As Integer Dim Myworkbook As String, Mybook As String Mypath = ActiveWorkbook.Path '格納フォルダのパスを取得する。 MycelNO = Range("D7").CurrentRegion.Rows.Count 'D列の処理ブックの数を数える。 '■連続実行 '--処理開始----------------------------------------------------------------- For x = 7 To 7 + MycelNO Mybook = Cells(x, 4) Myworkbook = Mypath & "\" & Mybook & ".xls" Workbook.Open Filename:=Myworkbook Next x End Sub
- ベストアンサー
- オフィス系ソフト
- マクロ処理後のファイル名変更について
マクロでいくつかの処理を行った後、もとのファイル名に 「済+ファイル名」としてファイル名を変更して終了をしたいのですが、 どのようにすればできるのかわかりません。 どなたか教えていただけますか? イメージ) 処理前のファイル名:サラダ.xls、お肉.xls・・・ 処理後のファイル名:済サラダ.xls、済お肉.xls・・・ Dim myPath As String Dim myFile As String Dim w As Workbook Dim s As Worksheet myPath = ThisWorkbook.Path & "\" myFile = Dir(myPath & "*.xls") Do Until myFile = "" If myFile <> ThisWorkbook.Name Then Set w = Workbooks.Open(myPath & myFile) For Each s In w.Worksheets s.Range・・・・・ ・・・・・・・・ ・・・・・・・・ Next w.Close savechanges:=True End If myFile = Dir() Loop MsgBox "完了しました。" End Sub
- ベストアンサー
- オフィス系ソフト
- マクロに関するエラー(オブジェクトが必要です。)
マクロは始めてで、いろいろ調べながら作ってみたのですが、 Set検索値の行でオブジェクトが必要ですというエラーが出て、 先に進めなくなりました。 申し訳ないのですが、何方かエラーの対処法を教えていただけないでしょうか。 よろしくお願いします。 ========================== Sub test() Worksheets("2月分").Activate Dim 検索値 As Integer Set 検索値 = Worksheets("2月分").Cells(4, 18) Worksheets("テスト").Activate Dim B As Range Dim C As Range For Each B In Range("B13,B413") ' 第一条件 If B.Value >= 検索値 Then GoTo Continue End If ' 第二条件 If B.Offset(0, 1).Value < 検索値 Then ' Offset(0, 1) は B列の隣のC列の値を取得 GoTo Continue End If Dim aValue As String aValue = B.Offset(0, 2).Value Worksheets("2月分").Cells("D19").Value = aValue Continue: Next End Sub
- 締切済み
- その他(ビジネス・キャリア)
お礼
オブジェクトの挿入…をXPの方で作成しました。 (2007では方法がわからなかったので) それを2007で開いてボタンをクリックしてみたら……なななんと、できました! ありがとうございました。m(_ _)m