Visual Basic
- PNGをアクティブシートに挿入するマクロについて
Excelマクロブックと同じフォルダ内にある複数のPNGファイル(画像)を、 このマクロブックのアクティブシートに一括で挿入する(場所はどこでも大丈夫です)マクロの書き方を教えて欲しいです。 質問が分かりづらかったら申し訳ありません。 どなたかご教授いただければ幸いです。
- ベストアンサー
- yopptommy
- Visual Basic
- 回答数5
- Visual Basic SQL文の結果
質問させてください。 Visual Basicからデータベースに接続をして、SQL文を実施できるツールを作っています。 接続はできているようなのですが、結果を画面に表示する方法がわかりません。 セレクト文結果として、デバック中にData Set ビジュアルライザー?では確認できます。 ボタンを押したらセレクト文を実行して、ラベルやDatawGridViewに表示させる方法を教えてください。 できそうなの処理をすると、DataTableの型にあっていない、などエラーがでてしまいます。
- ベストアンサー
- yt0426
- Visual Basic
- 回答数2
- 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) ※ここで例外が発生致します。 お手数おかけ致しますが宜しくお願い致します。 以上です。
- 締切済み
- 19820202
- Visual Basic
- 回答数1
- Visual Basic SQL文の結果表示
質問させていただきます。 VBからSQL文を送信し、データベースから結果を持ってくるという処理がしたいです。 ボタンを配置し、ボタンを押下したらSQL文を実行→ラベルやDataGridViewなどに表示 が理想です。 データベースの接続に苦戦しましたが、それはできているようで、SQL文を間違いはないようですが、実行しようとすると型があっていないとエラーがでてしまいます。 ご教示お願いします。
- 締切済み
- yt0426
- Visual Basic
- 回答数2
- Excel vba macroが突然消えてしまった
以前にも同様の経験があり、その時はWindowsの更新プログラムをアンインストールして直したような記憶がありますが、今回はお手上げの状態です。具体的には添付ファイルのようなエラーメッセージが出て、開いているすべてのブックではPersonal.xlsbだけは表示されるが作業中のブックのマクロは全く表示されされない状態になっています。 自作のマクロが100件くらい入っており、本当に困っています。 お助け下さい。
- ベストアンサー
- momochan1128
- Visual Basic
- 回答数3
- 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
- ベストアンサー
- TaikooniQ1
- Visual Basic
- 回答数2
- 伝票入力のデータ更新方法について
Accessで日毎の商品の製造入力を考えていますが、この入力を複数のパソコンで入力可能にしたいです。 画面は、 日付 2022/7/1 行 商品コード 製造数量 1 1001 10 2 1002 20 3 1003 30 「登録」 「削除」 のような感じです ちなみに、今までの作り方は、日付が入力されたら7/1の製造テーブルから明細をワークテーブルに入れて、画面で追加や変更をします。データ更新の時に、製造データの7/1のデータを削除して、追加や変更されたワークテーブルを製造テーブルにINSERTしてました。 ただ、これは他のパソコンで同時に7/1の製造入力が行われたら、他のパソコンで追加等のされたものが反映しないので、どのような方法で更新すれば良いですか? ただ、7/1の製造テーブルが他のPC使用中です!で止めたくはないです データベースはSQLSERVERを使います 宜しくお願い致します
- ベストアンサー
- yuyu4247
- Visual Basic
- 回答数1
- 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を少し前で設定していて、ワイルドカードを使用しています。 ワイルドカードは使用できないのでしょうか。 どのようにしたら上手く動くか教えていただけませんでしょうか。 よろしくお願いいたします。
- 締切済み
- kometoshi555
- Visual Basic
- 回答数2
- Visual Basic
プログラミングについて教えてください。 Visual Basicを使用し、テキストボックスに入れた値をが該当するデータベースを抽出し、別のテーブルに追加するというツールを作りたいと思っています。 (使用しているDBはOracle sql Developer) 例えですが、一つ目の職員情報テーブルには『名前』『職員番号』『部署ID』などが格納されており、二つ目の異動情報テーブルには 『職員番号』『異動地ID』などがあります。 VBのテキストボックスに部署IDと異動地ID を入力するところをつくり、部署IDが『1』のひとを探して、その人たちには異動地IDを『A』といれるなどのインサート文を流して、データベースに登録したいです。 VBとデータベースを繋げる方法はわかったのですが、セレクト文を使用するために必要なことなどがよくわかっておりません。 ご教示もらえればと思います。 よろしくお願いします。
- 締切済み
- yt0426
- Visual Basic
- 回答数4
- エクセル バグを解決するために 再起動VBA
エクセルでなぜかマクロのボタンが消えてしまうというバグが怒っており、どうしても修正することができないので、ブック自体を保存→もう一度同じのを開くというマクロを組みたいです。しかし、一度close関数?でブックを閉じる命令が出た後にopenの指示を出してもすでに閉じてしまっているブックからの指示を受け取らないようで、うまくいきません。 どなたか解決策を教えていただきたいです。
- 締切済み
- yamahb
- Visual Basic
- 回答数6
- 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
- ベストアンサー
- TaikooniQ1
- Visual Basic
- 回答数3
- マクロのAutoFilter Fieldについて
初めての質問のため、足りない情報などあるかもしれませんので、 その際はご指摘いただけますと幸いです。 マクロのAutoFilter Fieldの場所を可変させたい。 調べ方が甘いだけだと思いますが、AutoFilter Fieldの値を可変させる方法を教えてください。 縦軸に製品、横軸に日付の情報を持つ計画表に対し、 とある日の製品計画情報を抽出したいと考えています。 マクロサンプル記載 Range("$A$2:$z$100").AutoFilter Field:="A1", Criteria1:="製品名" ※A1にはフィルタをかけたい列番号が引数として入っています。 上記の"A1"部分を1や2などの定数にすれば問題ないのですが、 日付によって計画が違うため、可変させたいと考えています。 何か良い方法があれば教えていただけますと幸いです。
- ベストアンサー
- Ankan1977
- Visual Basic
- 回答数1
- outlook VBAについて
outlookのVBAで Application_NewMailEx で受信メールを拾って メールヘッダーにある「X-MS-Has-Attach」の値で処理を実行したいのです。 myNamespace.GetItemFromIDでsubjectなどは見れましたが「X-MS-Has-Attach」の値を見るためにはどうしたらいいのでしょうか?
- 締切済み
- hankyo01
- Visual Basic
- 回答数2
- 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)
- 締切済み
- ID_20150222
- Visual Basic
- 回答数1
- 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
- ベストアンサー
- ppiko0154
- Visual Basic
- 回答数2
- エクセル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 に変えてみましたがうまく行きませんでした。 どのようにしたら良いでしょうか?
- ベストアンサー
- 753
- Visual Basic
- 回答数8
- VBA 印刷 コード
今業務で困っているので 質問させていただきます。 前回は画像載せ忘れてしまい再度画像載せます。 現在 30社以上の顧客がいて それぞれ印刷のタイミングが違うので チェックボックスがTRUEの時は その顧客のシートを印刷できるようにしたいです。 (印刷ボタンをおしたら印刷) 前回は言葉足らずになってしまい混乱させてしまって 申し訳ございません。 回答いただいた皆様ありがとうございます。
- ベストアンサー
- ishikawa66
- Visual Basic
- 回答数6
- Excel VBA シート印刷
VBA初心者で申し訳ないですが 質問させていただきます。 32社の企業様がいて入力用のシートに 全てリンクさせているのですが 都度印刷するタイミングが違います。 そこで、チェックボックスを活用して TRUEの時は印刷できるように設定したいのですが どのようなコードがありますでしょうか? ご教授いただければ幸いです。
- ベストアンサー
- ishikawa66
- Visual Basic
- 回答数4
- マクロを使った文字化けしないCSV取込について
マクロを使って、csvをインポートしたいです。 しかし、csvを取り込むと、対象列が日付になってしまいます。 元データcsvには、とある一列の行毎に、0-3 10-1 22-5 0-1-2、11-14-0 などの数字と記号が並んでいます。 下記に意図したコードを入れたのですが、csvが変換されて、2022/1/3だとか、2011/1/14などとなります。 これを元のデータの通りに取り込むには、どのようなコードを差し込めば良いのでしょうか? ※設定(adodb.stream)は行わない想定です。 ご教示願います。 "Sub Csv_Import() Dim A_Sheet 'Excelファイルのシート名を入れ込む変数' Dim Csv_Import_File 'Excelファイルに取り込むCSVファイルの名前を入れ込む変数' A_Sheet = ActiveSheet.Name '現在アクティブなシート名を変数 A_Sheet に入れ込む' Csv_Import_File = Application.GetOpenFilename(""CSVファイル,*.csv"") 'CSVファイルを選択する' If Csv_Import_File = ""False"" Then Exit Sub 'キャンセルなら終了' ThisWorkbook.Sheets(""Import"").Range(""A1:OOO2000"").ClearContents '「CSVデータ取込み」シートのセル「A1~OOO2000」をクリアする' With Workbooks.Open(Csv_Import_File) .Sheets(1).Cells.Copy ThisWorkbook.Sheets(""Import"").Range(""A1"") '全てのデータをこのブックの「CSVデータ取込み」シートにコピー' .Close 'CSVファイルを閉じる' End With Worksheets(A_Sheet).Activate 'A_Sheet という名前のシートをアクティブにする' End Sub
- ベストアンサー
- QQwerty123
- Visual Basic
- 回答数2
- 選択範囲のセルを結合して、値を代入
画像のような工程表を、作成しております。 4行目のセルを結合して、〇月と表示させたいのですが、可能でしょうか。 5行目の日付は、yyyy/mm/dd で入力しており、表示をddとしております。 この画像ですとG4~AA4、AB4~AW4、AX4~BT4を結合して、5行目の日付から月を参照して、結合したセルに表示させたいです。 4行目の結合範囲は、都度変わるので、選択範囲で結合して、5行目の月を参照させたいのですが、可能でしょうか。
- ベストアンサー
- konopotter
- Visual Basic
- 回答数2