Visual Basic

全22567件中161~180件表示
  • マクロモジュールの一覧表を作成したい。

    先日来、VBAマクロが突然消える症状で困惑しておりましたが、本欄に投稿することで解決しました。 その過程で、既存のExcel Bookにあるマクロの一覧を別のフォルダーに取り出し、一覧にしたいと思いました。 Web検索でその方法を見つけ、MyMacroFolderに一覧とすることが出来ました。しかし、これらは添付ファイルのようにmodule1.bas,module2.bas.....であり、どのようなマクロか分かりません。それでExcel VBAを使ってmodule1,module2,...と開きながら、sub マクロ名で記されている名前を module1 マクロ名1 module2 マクロ名2 . . のように出力したいのですが、どのように記述すればよろしいのでしょうか?

  • Visual Basic Oracleエラー

    質問します。 Visual BasicからOracle データベースに登録するときに、 エラーが発生したときにメッセージを出るようにしていますが、例えば、ORA-00000のセレクト文抽出件数がない場合、ORA-00001のinsertで既に登録があるとき、など、システムを使う人がわかりやすいようにエラーメッセージそれぞれを二つだけ変えたいと思うのですが、エラーメッセージ分岐方法がわかりません。 ex.numberとかで指定できるかと思ったのですが、できなかったので方法を教えてください。 よろしくお願いします。

  • PNGをアクティブシートに挿入するマクロについて

    Excelマクロブックと同じフォルダ内にある複数のPNGファイル(画像)を、 このマクロブックのアクティブシートに一括で挿入する(場所はどこでも大丈夫です)マクロの書き方を教えて欲しいです。 質問が分かりづらかったら申し訳ありません。 どなたかご教授いただければ幸いです。

  • Visual Basic SQL文の結果

    質問させてください。 Visual Basicからデータベースに接続をして、SQL文を実施できるツールを作っています。 接続はできているようなのですが、結果を画面に表示する方法がわかりません。 セレクト文結果として、デバック中にData Set ビジュアルライザー?では確認できます。 ボタンを押したらセレクト文を実行して、ラベルやDatawGridViewに表示させる方法を教えてください。 できそうなの処理をすると、DataTableの型にあっていない、などエラーがでてしまいます。

  • VB DataGridView 行削除

    Visualbasic 2010 を利用してWindowsFormアプリケーションを開発しております。 データベースはORACLE11を利用しております。 VB側よりOracleDataAdapterを利用してDatatableにORACLEのSELECT結果を格納しています。 DataGridViewには上記のDataTableをDataSourceとして割り当てております。 このDataGridViewに並び替え機能を組み込んでおります。 ※DataViewのSortを利用して並び替えを実現しております。 この後にDataGridViewの行削除を行うと以下の例外が発生します。 一意制約(XXX.PKY_テストデータ)に反しています Oracle.DataAccess.Client.OracleException これはDataTableをSortしたためOracleDataAdapterと一致しなくなったことが原因ではないかと推測しております。 DataGridViewの並び替えを行っても正常に行削除を行いDataTableにも反映する方法が分る方がいらっしゃいましたらご教授頂けないでしょうか。 VBソース抜粋 ・データ抽出 '/ SQLをOracleで実行した結果をデータアダプタに格納 Dadp5 = New OracleDataAdapter("SELECT * from テストデータ", CONFIG.Database) Dadp5.Fill(dt_test) Me.DataGridView_TEST.DataSource = dt_test ・並び替え(降順) Dim dv = New DataView(dt_test) dv.Sort = "テストコード DESC" dt_test = dv.ToTable Me.H_DataGridView_test.DataSource = dt_test ・行削除 Dim scBuilder As New OracleCommandBuilder(Dadp5) '/ データグリッドビューの編集内容をデータベースへ反映 '/ 生成されたSQLを実行する Dadp5.Update(dt_test) ※ここで例外が発生致します。 お手数おかけ致しますが宜しくお願い致します。 以上です。

  • Visual Basic SQL文の結果表示

    質問させていただきます。 VBからSQL文を送信し、データベースから結果を持ってくるという処理がしたいです。 ボタンを配置し、ボタンを押下したらSQL文を実行→ラベルやDataGridViewなどに表示 が理想です。 データベースの接続に苦戦しましたが、それはできているようで、SQL文を間違いはないようですが、実行しようとすると型があっていないとエラーがでてしまいます。 ご教示お願いします。

  • Excel vba macroが突然消えてしまった

    以前にも同様の経験があり、その時はWindowsの更新プログラムをアンインストールして直したような記憶がありますが、今回はお手上げの状態です。具体的には添付ファイルのようなエラーメッセージが出て、開いているすべてのブックではPersonal.xlsbだけは表示されるが作業中のブックのマクロは全く表示されされない状態になっています。 自作のマクロが100件くらい入っており、本当に困っています。 お助け下さい。

  • VBA ある日付の指定

    やりたいこと 例:今日の日付が4/1ならA1セルに『A』という文字を入れる というIF文を書きたいのですができません。 この場合、2022/4/1という限定的な指定方法ではなく 4/1なら(2023年や2024年でも指定できる)という形で コードを書きたいのですができませんでした。 すいませんが回答よろしくお願い致します。 sub test() if date = 4/1 then  range("A1").value="A" end if end sub

  • 伝票入力のデータ更新方法について

    Accessで日毎の商品の製造入力を考えていますが、この入力を複数のパソコンで入力可能にしたいです。 画面は、 日付 2022/7/1 行 商品コード 製造数量 1 1001   10 2 1002   20 3 1003   30 「登録」 「削除」 のような感じです ちなみに、今までの作り方は、日付が入力されたら7/1の製造テーブルから明細をワークテーブルに入れて、画面で追加や変更をします。データ更新の時に、製造データの7/1のデータを削除して、追加や変更されたワークテーブルを製造テーブルにINSERTしてました。 ただ、これは他のパソコンで同時に7/1の製造入力が行われたら、他のパソコンで追加等のされたものが反映しないので、どのような方法で更新すれば良いですか? ただ、7/1の製造テーブルが他のPC使用中です!で止めたくはないです データベースはSQLSERVERを使います 宜しくお願い致します

  • VBA ワイルドカード使用でフォルダ指定⇒画像選択

    ➀VBAで指定したフォルダを開いて、②そのなかにある複数の画像から、画像を選択して貼り付けたいと考えています。 ➀のフォルダは、年度別の階層、月別の階層、そのなかに番号でフォルダがあります。番号というのは、001-001、002-001、003-001~002、005-001~009などです。前の3桁は連番ではありません。ハイフン以降は、001、001~002など様々です。 前の3桁が同じものは存在しません(例えば002-001、002-002、002-001~009などが同時に存在することはありません)。そのため、前の3桁+ワイルドカードでフォルダを指定したいと考えています。  年度別 2019、2020、2021、2022   月別 04、05、06、07、、、、    番号 001-001、002-001、003-001~002、005-001~009 'カレントディレクトリ変更 ★Call SetCurrentDirectory("C:\Users\yuka0\OneDrive\デスクトップ\YY\MM\002*") ★★Call SetCurrentDirectory(NewDirPath) (YY、MMは別で定義しています) sWork=Application.GetOpenFilename("画像ファイル,*.jpg;*.jpeg;*.gif;*.tif;*.png;*.bmp") If sWork = "False" Then Exit Sub '画像の挿入 ActiveSheet.Pictures.Insert(sWork).Select ★★は、NewDirPathを少し前で設定していて、ワイルドカードを使用しています。 ワイルドカードは使用できないのでしょうか。 どのようにしたら上手く動くか教えていただけませんでしょうか。 よろしくお願いいたします。

  • Visual Basic

    プログラミングについて教えてください。 Visual Basicを使用し、テキストボックスに入れた値をが該当するデータベースを抽出し、別のテーブルに追加するというツールを作りたいと思っています。 (使用しているDBはOracle sql Developer) 例えですが、一つ目の職員情報テーブルには『名前』『職員番号』『部署ID』などが格納されており、二つ目の異動情報テーブルには 『職員番号』『異動地ID』などがあります。 VBのテキストボックスに部署IDと異動地ID を入力するところをつくり、部署IDが『1』のひとを探して、その人たちには異動地IDを『A』といれるなどのインサート文を流して、データベースに登録したいです。 VBとデータベースを繋げる方法はわかったのですが、セレクト文を使用するために必要なことなどがよくわかっておりません。 ご教示もらえればと思います。 よろしくお願いします。

  • エクセル バグを解決するために 再起動VBA

    エクセルでなぜかマクロのボタンが消えてしまうというバグが怒っており、どうしても修正することができないので、ブック自体を保存→もう一度同じのを開くというマクロを組みたいです。しかし、一度close関数?でブックを閉じる命令が出た後にopenの指示を出してもすでに閉じてしまっているブックからの指示を受け取らないようで、うまくいきません。 どなたか解決策を教えていただきたいです。

  • VBA コンボボックスの条件分岐

    コンボボックスの条件分岐のコードが間違っているみたいで 調べても分からなかったので質問します。 やりたいこと 『マスタ』という名前のシート内のセルを参照し マスタシートには C2セル『A』C3セル『B』C4セル『C』と それぞれアルファベットがあります。 そこでコンボボックスを使用し コンボボックス22にC2~C4セルを選択できるようにし 例えばC2セルを選択したら コンボボックス21の参照範囲をマスタシート内の D2~D13セルを選択できるようにし C3セルを選択したら コンボボックス21の参照範囲をマスタシート内の E2~E13セルを選択できるようにしたいのです。 すいませんがコードを記載して頂けますと 助かります。 Private Sub UserForm_Activate() '----------------------- With ComboBox22 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!C2:C4" End With '↑こうすればコンボボックス22のマスタシートのC2からC4まで値を選択できるようになります。 '------------------------わかりやすく区切っています。 '--------------------------------------- If UserForm1.ComboBox22 = "A" Then With ComboBox21 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!D2:D13" End With End If '↑コンボボックス22の値が(C2セルの値がAなら)コンボボックス21をマスタシートのD2からD13までを選択できるようにしたい If UserForm1.ComboBox22 = "B" Then With ComboBox21 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!E2:E13" End With End If '↑コンボボックス22の値が(C3セルの値がBなら)コンボボックス21をマスタシートのE2からE13までを選択できるようにしたい '----------------------------------------区切っています。 End Sub

  • マクロのAutoFilter Fieldについて

    初めての質問のため、足りない情報などあるかもしれませんので、 その際はご指摘いただけますと幸いです。 マクロのAutoFilter Fieldの場所を可変させたい。 調べ方が甘いだけだと思いますが、AutoFilter Fieldの値を可変させる方法を教えてください。 縦軸に製品、横軸に日付の情報を持つ計画表に対し、 とある日の製品計画情報を抽出したいと考えています。 マクロサンプル記載 Range("$A$2:$z$100").AutoFilter Field:="A1", Criteria1:="製品名" ※A1にはフィルタをかけたい列番号が引数として入っています。 上記の"A1"部分を1や2などの定数にすれば問題ないのですが、 日付によって計画が違うため、可変させたいと考えています。 何か良い方法があれば教えていただけますと幸いです。

  • outlook VBAについて

    outlookのVBAで Application_NewMailEx で受信メールを拾って メールヘッダーにある「X-MS-Has-Attach」の値で処理を実行したいのです。 myNamespace.GetItemFromIDでsubjectなどは見れましたが「X-MS-Has-Attach」の値を見るためにはどうしたらいいのでしょうか?

  • VB.NETでDLL関数を呼び出すには

    VB.NETでDLLの関数を呼び出す時に、 NewではなくCreateObject()を使って呼び出すには、 どのように記述をすればよいのでしょうか。 具体的には、 ソリューション名 ClassLibrary1で ---------------------------------- Imports System.Windows.Forms Public Class Class1 Public Sub test() MessageBox.Show("テスト") End Sub End Class ---------------------------------- のコードをビルドしてClassLibrary1.dllを生成して、 ソリューション名 ConsoleApp1で ---------------------------------- Imports ClassLibrary1 Module Module1 Sub Main() Dim obj As Class1 obj = New Class1() 'obj = CreateObject("Class1") obj.test() End Sub End Module ---------------------------------- のコードをビルドして実行すると、 正しく実行できますが、 obj = New Class1() を obj = CreateObject("Class1") のようにすると図のようなエラーになります。 Newではなく、CreateObject()を使ってDLLを呼び出すには、 どのように記述をすればよいのでしょうか。 よろしくお願いします。 (Windows10)(Visual Studio 2022)

  • vbaにて、オブジェクトエラー

    ただいまvbaで、ユーザーフォームとテキストボックスを用いて、数字のからまで、でフィルタリングするvbaをつくっています。 オブジェクトエラーがでてしまうのですが、 ちゃんとsetを入れているのになぜ出てしまうのでしょうか? また、その他何かご指摘あればいただきたいです。 何卒宜しくお願い致します。 Sub 集計開始() Dim drng As Range Dim kara As String, made As String Dim cnt As Long ActiveSheet.AutoFilterMode = False Set drng = Range("A1").CurrentRegion kara = Val(usetform1.TextBox1.Text) made = Val(usetform1.TextBox2.Text) If kara <> "" And made = "" Then drng.Worksheets("●●●").AutoFilter Field:=15, Criterial1:=">=" & kara ElseIf kara = "" And made <> "" Then drng.Worksheets("●●●").AutoFilter Field:=15, Criterial1:="<=" & made ElseIf kara <> "" And made <> "" Then drng.Worksheets("kwzweb").AutoFilter Field:=15, Criterial1:=">=" & kara, _ Operator:=xlAnd, Criteria2:="<=" & made Else MsgBox "数字を入力してください" Exit Sub End If End Sub

  • エクセルVBAのIf ~ Thenステートメントで

    予約フォームの作成に挑戦しています。 予約日が2022年8月1日の時のみ、シート4に結果を記入して行きたいのですが、 Private Sub CommandButton1_Click() If ListBox1.Text = "44774" Then Sheet4.Select Range("C2").End(xlDown).Offset(1, 0).Select ActiveCell.Value = Reservationform.ListBox2.Value ActiveCell.Offset(0, 1).Value = Reservationform.ListBox3.Value ActiveCell.Offset(0, 2).Value = Reservationform.ListBox4.Value ActiveCell.Offset(0, 2).NumberFormat = Range("C2").NumberFormat Exit Sub End If End Sub で、とりあえず成功しています。 "44774" の部分を、"Sheet6のA2"だった時のみ結果を記入するようにしたいです。 " "の中身をそのまま変えて、 If ListBox1.Text = "sheet6.Range("A2")" Then や If ListBox1.Text = "sheet6.Cells(2, 1).Value" Then に変えてみましたがうまく行きませんでした。 どのようにしたら良いでしょうか?

  • VBA 印刷 コード

    今業務で困っているので 質問させていただきます。 前回は画像載せ忘れてしまい再度画像載せます。 現在 30社以上の顧客がいて それぞれ印刷のタイミングが違うので チェックボックスがTRUEの時は その顧客のシートを印刷できるようにしたいです。 (印刷ボタンをおしたら印刷) 前回は言葉足らずになってしまい混乱させてしまって 申し訳ございません。 回答いただいた皆様ありがとうございます。

  • Excel VBA シート印刷

    VBA初心者で申し訳ないですが 質問させていただきます。 32社の企業様がいて入力用のシートに 全てリンクさせているのですが 都度印刷するタイミングが違います。 そこで、チェックボックスを活用して TRUEの時は印刷できるように設定したいのですが どのようなコードがありますでしょうか? ご教授いただければ幸いです。