kobouzu_su の回答履歴
- Excel VBA msoAutomationSecurityForceDisableについて
マクロを無効にしてファイルを読み込むコードを過去レスを見て作成しましたが、msoAutomationSecurityForceDisableを定数でなく、変数としか認識しないため、うまく機能しません。 下記コードのどこを修正すべきか、ご教示願います。 Sub read() Dim DirN As String Dim Fname As String With ThisWorkbook.Worksheets("手当") .Activate .Range(.Cells(7, 1), .Cells(10000, 40)).ClearContents End With Set NxL = CreateObject("Excel.application") NxL.Visible = True NxL.AutomationSecurity = msoAutomationSecurityForceDisable NxL.DisplayAlerts = False DirN = Worksheets("手当").Range("C2").Value & "\" Fname = Dir(DirN & "*.xls") Set Mybook = NxL.Workbooks.Open(DirN & Fname) Call read1(Mybook) Do While Fname <> "" Set NxL = CreateObject("Excel.application") NxL.Visible = True NxL.AutomationSecurity = msoAutomationSecurityForceDisable NxL.DisplayAlerts = False '追加してファイル名を検索する場合はDir関数の引数はなくす。 Fname = Dir() Set Mybook = NxL.Workbooks.Open(DirN & Fname) Call read1(Mybook) Loop End Sub
- VB6にて文字型変数の内容をオブジェクト変数に代入する方法
VB初心者ですが オブジェクト変数に文字型変数で作成した オブジェクト名を代入したいのですが 上手くいきません。 Dim anyCmb As ComboBox Dim cmb_name As String cmb_name = "ABC" Set anyCmb = cmb_name 誰かわかる方がいましたら、教えてください。 よろしくお願いします。
- 締切済み
- Visual Basic
- atuichi
- 回答数2
- このサイトでVBAコードのインデントを反映させる方法?
いつもお世話になっております。 このサイトでVBAの質問をよくさせていただいております。 今回、疑問に思ったのは、自分で書いたコードをVBEからここにコピペすると、入っているはずのインデントがすべて消えてしまっているということです。 他の方の投稿を見るとやはり同じように消えているものや、ちゃんとはいっているものもあります。 どうやったら、インデントを反映させることができるのでしょうか?
- Excelのグラフのユーザー定義
Excelで独自のグラフをユーザー定義して登録することが出来ますが、その際、グラフのダイアログボックスのユーザー定義のタブの中の"ユーザー定義"を選択した時に出てくるグラフの種類"標準"って何でしょうか?「標準を選択すると、新しいグラフを作成する度に・・・」と書かれていて、選択してしまうと元に戻せないような気がしてこわい気がすんです。どなたか教えてください!
- Excel2005ツールバーで削除したコントロールを元に戻す方法を教えてください
Excel2003のVBA編集画面のフォームに追加するためのコントロールツールバーのリストボックスを誤って削除してしまいました。元に戻すにはどうすればよいでしょうか? コントロールの追加をして元に戻せるか試してみましたが、利用可能なコントロールの一覧にありません。非常に困っていますご教示宜しくお願いいたします。
- エクセル関数COUNTIFでのAND条件
0より大きく、5以下であるセルの個数を取得するCOUNTIF関数で、AND条件で、 =COUNTIF(A1:A10,"AND(>0,5<=") としても答えは0になってしまいます。 下記のように0より大きい個数を求め、そこから5を越える個数を引けば答えは出るのですが、ANDではもとめられないのでしょうか? =COUNTIF(A1:A10,">0")-COUNTIF(A1:A10,">5")
- エクセル関数COUNTIFでのAND条件
0より大きく、5以下であるセルの個数を取得するCOUNTIF関数で、AND条件で、 =COUNTIF(A1:A10,"AND(>0,5<=") としても答えは0になってしまいます。 下記のように0より大きい個数を求め、そこから5を越える個数を引けば答えは出るのですが、ANDではもとめられないのでしょうか? =COUNTIF(A1:A10,">0")-COUNTIF(A1:A10,">5")
- Excel2003のObjectLibrary
現在、社内でVB6からExcelファイルへ出力するプログラムを作成しております。 社内のExcelは2000で、お客様のExcelは2003なのですが、2003のObjectLibraryは10ですか?9ですか? 社内は2000なのでExcel 9.0 ObjectLibraryを参照設定することでうまく行きそうなのですが、お客様のところでもうまく行くのか不安です。 Excel2003のObjectLibraryは何なのか? また、10の場合は参照設定をExcel 10.0 ObjectLibraryにかえるだけでうまくいくのでしょうか? プログラムでは シートのコピー、シート名変更、セルへの書込み ぐらいの処理しかしません。 ご存知の方、いらっしゃいましたら、ご回答お願い致します。
- 締切済み
- Visual Basic
- a_i_u_e_o
- 回答数2
- 【Excel VBA】列幅の設定
こんばんは。 Excel2003を使用しています。 あるシステムからのデータをCSVで出力、Excelで表示させると、セルの幅が合っていないので、見づらいのですが、これを解消するためにそれぞれの列幅を決めて、マクロで設定したいと思っています。 連続しない列の列幅の設定のコードの書き方がわからないので、教えていただけないでしょうか?ひとつの列や連続した列幅の設定であれば、手元にある参考書でわかるのですが。。。 例えば A列、C列、D列、G列、I列、J列の列幅を14 B列、F列、H列の列幅を10 に設定するコードはどのように書いたらいいのでしょうか? マクロ勉強中です。よろしくお願いします。
- EXCEL Advancedfilter Name(Criteria)の自動作成
重複データから重複のないデータを抜き出すため、下記のようにCriteriaRangeを指定せずに、Advancedfilterを実行していますが、その際にシートの特定のセルにCriteriaという名前(Nameオブジェクト)が自動的に作成され、それが残る現象が生じます。 シートにその名前(Criteria)が残ると、別のSUBで重複データから重複のないデータを抜き出すためAdvancedfilterを実行すると機能しません(表題部だけ抜き出してくる)。 そこで、2点ご教示いただければ幸いです。 1 Criteriaを残さないAdvancedfilterの実行方法 2 残ってしまうCriteriaを削除する方法として、下記のコードを加えていますが、Namesコレクションの特定のName(Criteria)を特定して削除させていますが、この方法は=を使っていることが、後日のコード解析を分かりづらいものにするため、避けた方がよいと別に指導を受けているため、これ以外の効率的な方法があればご教示願います(例えば、Nameのプロパティを変更する方法による対処方法)。 Criteriaを削除するコード Dim Objname As name For Each Objname In ActiveWorkbook.Names If Objname.name = "作業用シート!Criteria" Then Objname.Delete End If Next Objname Advancedfilterのコード With Worksheets("作業用シート") M = .Range("B10000").End(xlUp).Row .Range(.Cells(6, 5), .Cells(M, 5)).AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=.Range("AA6:AA2000"), Unique:=True end with
- 顧客番号を指定して印刷するには?
別シートに印刷用のレイアウトを作成し、更に別シートで印刷設定を行っています。 その印刷設定のページには、印刷開始顧客番号 印刷終了顧客番号とセルを作り、そこで顧客番号を指定して連続印刷したいのですが、今の状況だと、For MyCounter 1 to 5の5の部分を変え残りは手動で入力という方法で印刷しています。 顧客番号のみで連続印刷する為にはどうすれば宜しいのでしょうか? 宜しくお願いいたします。 ---------------------------------------------------------------- Sub 連続印刷2() Dim mycounter As Integer Dim sita1 As Integer Dim migi1 As Integer mycounter = 1 sita1 = Sheets("設定2").Cells(4, 2) migi1 = Sheets("設定2").Cells(5, 2) For mycounter = 1 To 5 Sheets("レイアウト2").Select Range("O2").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 2, 1) Range("O6").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 3, 1) Range("O10").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 4, 1) Range("O14").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 5, 1) Range("O18").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 6, 1) Range("O22").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 7, 1) Range("O26").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 8, 1) Range("O30").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 9, 1) Range("O34").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 10, 1) Range("O38").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 11, 1) Range("O42").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 12, 1) Range("O46").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 13, 1) Range("O50").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 14, 1) Range(Cells(1, 1), Cells(sita1, migi1)).Select Selection.PrintOut Copies:=Sheets("設定2").Cells(6, 2) Next End Sub
- ベストアンサー
- Visual Basic
- Jize
- 回答数6
- 顧客番号を指定して印刷するには?
別シートに印刷用のレイアウトを作成し、更に別シートで印刷設定を行っています。 その印刷設定のページには、印刷開始顧客番号 印刷終了顧客番号とセルを作り、そこで顧客番号を指定して連続印刷したいのですが、今の状況だと、For MyCounter 1 to 5の5の部分を変え残りは手動で入力という方法で印刷しています。 顧客番号のみで連続印刷する為にはどうすれば宜しいのでしょうか? 宜しくお願いいたします。 ---------------------------------------------------------------- Sub 連続印刷2() Dim mycounter As Integer Dim sita1 As Integer Dim migi1 As Integer mycounter = 1 sita1 = Sheets("設定2").Cells(4, 2) migi1 = Sheets("設定2").Cells(5, 2) For mycounter = 1 To 5 Sheets("レイアウト2").Select Range("O2").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 2, 1) Range("O6").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 3, 1) Range("O10").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 4, 1) Range("O14").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 5, 1) Range("O18").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 6, 1) Range("O22").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 7, 1) Range("O26").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 8, 1) Range("O30").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 9, 1) Range("O34").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 10, 1) Range("O38").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 11, 1) Range("O42").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 12, 1) Range("O46").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 13, 1) Range("O50").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 14, 1) Range(Cells(1, 1), Cells(sita1, migi1)).Select Selection.PrintOut Copies:=Sheets("設定2").Cells(6, 2) Next End Sub
- ベストアンサー
- Visual Basic
- Jize
- 回答数6
- 顧客番号を指定して印刷するには?
別シートに印刷用のレイアウトを作成し、更に別シートで印刷設定を行っています。 その印刷設定のページには、印刷開始顧客番号 印刷終了顧客番号とセルを作り、そこで顧客番号を指定して連続印刷したいのですが、今の状況だと、For MyCounter 1 to 5の5の部分を変え残りは手動で入力という方法で印刷しています。 顧客番号のみで連続印刷する為にはどうすれば宜しいのでしょうか? 宜しくお願いいたします。 ---------------------------------------------------------------- Sub 連続印刷2() Dim mycounter As Integer Dim sita1 As Integer Dim migi1 As Integer mycounter = 1 sita1 = Sheets("設定2").Cells(4, 2) migi1 = Sheets("設定2").Cells(5, 2) For mycounter = 1 To 5 Sheets("レイアウト2").Select Range("O2").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 2, 1) Range("O6").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 3, 1) Range("O10").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 4, 1) Range("O14").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 5, 1) Range("O18").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 6, 1) Range("O22").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 7, 1) Range("O26").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 8, 1) Range("O30").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 9, 1) Range("O34").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 10, 1) Range("O38").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 11, 1) Range("O42").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 12, 1) Range("O46").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 13, 1) Range("O50").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 14, 1) Range(Cells(1, 1), Cells(sita1, migi1)).Select Selection.PrintOut Copies:=Sheets("設定2").Cells(6, 2) Next End Sub
- ベストアンサー
- Visual Basic
- Jize
- 回答数6
- 顧客番号を指定して印刷するには?
別シートに印刷用のレイアウトを作成し、更に別シートで印刷設定を行っています。 その印刷設定のページには、印刷開始顧客番号 印刷終了顧客番号とセルを作り、そこで顧客番号を指定して連続印刷したいのですが、今の状況だと、For MyCounter 1 to 5の5の部分を変え残りは手動で入力という方法で印刷しています。 顧客番号のみで連続印刷する為にはどうすれば宜しいのでしょうか? 宜しくお願いいたします。 ---------------------------------------------------------------- Sub 連続印刷2() Dim mycounter As Integer Dim sita1 As Integer Dim migi1 As Integer mycounter = 1 sita1 = Sheets("設定2").Cells(4, 2) migi1 = Sheets("設定2").Cells(5, 2) For mycounter = 1 To 5 Sheets("レイアウト2").Select Range("O2").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 2, 1) Range("O6").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 3, 1) Range("O10").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 4, 1) Range("O14").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 5, 1) Range("O18").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 6, 1) Range("O22").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 7, 1) Range("O26").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 8, 1) Range("O30").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 9, 1) Range("O34").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 10, 1) Range("O38").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 11, 1) Range("O42").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 12, 1) Range("O46").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 13, 1) Range("O50").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 14, 1) Range(Cells(1, 1), Cells(sita1, migi1)).Select Selection.PrintOut Copies:=Sheets("設定2").Cells(6, 2) Next End Sub
- ベストアンサー
- Visual Basic
- Jize
- 回答数6
- 顧客番号を指定して印刷するには?
別シートに印刷用のレイアウトを作成し、更に別シートで印刷設定を行っています。 その印刷設定のページには、印刷開始顧客番号 印刷終了顧客番号とセルを作り、そこで顧客番号を指定して連続印刷したいのですが、今の状況だと、For MyCounter 1 to 5の5の部分を変え残りは手動で入力という方法で印刷しています。 顧客番号のみで連続印刷する為にはどうすれば宜しいのでしょうか? 宜しくお願いいたします。 ---------------------------------------------------------------- Sub 連続印刷2() Dim mycounter As Integer Dim sita1 As Integer Dim migi1 As Integer mycounter = 1 sita1 = Sheets("設定2").Cells(4, 2) migi1 = Sheets("設定2").Cells(5, 2) For mycounter = 1 To 5 Sheets("レイアウト2").Select Range("O2").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 2, 1) Range("O6").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 3, 1) Range("O10").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 4, 1) Range("O14").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 5, 1) Range("O18").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 6, 1) Range("O22").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 7, 1) Range("O26").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 8, 1) Range("O30").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 9, 1) Range("O34").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 10, 1) Range("O38").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 11, 1) Range("O42").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 12, 1) Range("O46").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 13, 1) Range("O50").Value = Sheets("住所録(会社)").Cells((mycounter - 1) * 13 + 14, 1) Range(Cells(1, 1), Cells(sita1, migi1)).Select Selection.PrintOut Copies:=Sheets("設定2").Cells(6, 2) Next End Sub
- ベストアンサー
- Visual Basic
- Jize
- 回答数6
- マクロで発生するエラーを無視するには
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim CellRange As String, S As String CellRange = "A1:D5" ActSheet = ActiveWorkbook.ActiveSheet.Name '現在開いているシート名を取得 ActSheet = Left(ActSheet, 5) 'シート名から「Sheet」の部分だけ抜き出す Set r = Intersect(Target, Range(CellRange)) If Not (r Is Nothing) Then Application.EnableEvents = False For Num = 1 To 3 S = ActSheet & Num Worksheets(S).Range(r.Address).Value = r.Value Next Application.EnableEvents = True End If End Sub シートSheet1、Sheet2、Sheet3がある時に、 あるシートのセル範囲A1:D5の中のセルに値が書き込まれたら、他のシートの同じ位置に同じ値を入力させるコードです。 このコードは過去に質問した時に教えていただいたもののほぼコピーです。 値を入力し、確定後にシートを切り替えることで正常に動作します。 ただし、セルに値を入力したが『確定していない状態』でシートを切り替えるとエラーが発生して止まります。 エラーメッセージは「実行時エラー'1004' Intersectメソッドは失敗しました。'_Global'オブジェクト」と出ます。 確定せずにシートを切り替えたのだからエラーが出るのは当たり前だと思うのですが、 なんとかエラーが出ないようにする方法は無いでしょうか。 欲を言えば、 シートを切り替えた時点でセルに入った未確定の値は確定扱いになって、 『他のシートの同じ位置に同じ値を入れる』のマクロが正常に動作するのが最も望ましいですが、 不可能な気もするので、 未確定の状態でシートを切り替えた場合は『他のシートの同じ位置に同じ値を入れる』のマクロは実行されなくても良いです。 ただエラーメッセージが出て止まってしまうのを避けたいです。 「エラーが出た時にエラーメッセージの「終了」を押す」というマクロが組めればそれでも問題ないのですが、 流石にその操作は「マクロを記録する」では記録してくれませんでした。
- エクセルVBAで2種類のCheckboxについて
ワークシート上に配置したチェックボックスですが、 フォームから挿入したものなら Sub TEST01() ActiveSheet.CheckBoxes.Value = xlOn End Sub で、全てのチェックボックスがオンになります。 コントロールツールボックスから貼り付けたチェックボックスの場合はどのように記述するのでしょうか?
- エクセルで特定のセルへの直接入力だけを禁止したいんです。
過去の質問を参考に『セルをダブルクリックすると"○"と入力される』というマクロを○⇒●⇒-⇒ ⇒○⇒・・・として使っているんですが、ダブルクリックの度にセルが直接入力の状態(縦の棒の点滅)になってしまい、一度他のセルをクリックしないと次へ進めずに困っています。 良い方法ってあるのでしょうか? ちなみに使用しているマクロは Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const rng As String = "A1:A3" '処理対象のセル範囲 If Not Application.Intersect(Target, Range(rng)) Is Nothing Then If Target.Value = "" Then Target.Value = "○" ElseIf Target.Value = "○" Then Target.Value = "●" ElseIf Target.Value = "●" Then Target.Value = "-" Else Target.ClearContents End If End If End Sub というものです。 よろしくお願いします。
- エクセルでwebbrowserコントロールを利用したい
的外れな部分がありましたら、その点でもご指摘くださいますようお願いいたします。 利用しているのはExcel2000です。 エクセルのツールの「コントロール/ツールボックス」にWebbrowserコントロールが見当たりません。 『VBE画面から「ツール」」メニュー→「その他のコントロール」にて設定する』旨の記述をネット上で見つけました。 「VBE画面」はVBAのエディット画面であると認識し、当行程を行おうとしたところ、「その他のコントロール」メニューがDisableになっていました。 そこでその上の参照設定メニュにあたってみましたが、該当するものを特定できませんでした。 Webbrowserコントロールはどのようにすれば利用できるのでしょうか? よろしくお願いいたします。
- エクセルでwebbrowserコントロールを利用したい
的外れな部分がありましたら、その点でもご指摘くださいますようお願いいたします。 利用しているのはExcel2000です。 エクセルのツールの「コントロール/ツールボックス」にWebbrowserコントロールが見当たりません。 『VBE画面から「ツール」」メニュー→「その他のコントロール」にて設定する』旨の記述をネット上で見つけました。 「VBE画面」はVBAのエディット画面であると認識し、当行程を行おうとしたところ、「その他のコントロール」メニューがDisableになっていました。 そこでその上の参照設定メニュにあたってみましたが、該当するものを特定できませんでした。 Webbrowserコントロールはどのようにすれば利用できるのでしょうか? よろしくお願いいたします。