Visual Basic

全22571件中81~100件表示
  • 新規CSVデータの2行目以下を追加するVBA

    新規取得のCSVデータの2行目以下のデータを、ベースのBookファイルに追加するVBAを教えてください 店舗でビジネスをやっており、新しい電子決済端末を導入したところ、売り上げ等クラウドで見れるのですが、手数料のデータをローカルに落としたい場合、月数回の支払日ごとにcsvが分割されていることがわかりました csvファイルは、月6回(5日ごと)のファイルとなって入手できます。画像の上部のようなフォーマットになっています。 複数のファイル(売上用とか決済手数料一覧とか)があるのですが、列はどれも最長AZ列までカバーしていれば問題ありません この月6回配布されるcsvデータをローカルのExcelで分析したいため、毎回入手するたびに、2行目以下のデータを、ベースのBookファイルに追加していきたいのです csvファイルのデータ行数は売上数が毎日変動するため、毎回(6回/月)変動し不定です ネットでコードを探したのですが、いいのがみつからなかったのでここで質問させていただきました なお以前サラリーマンだったときExcel VBAを使っていたので、コードさえあれば実装はできます よろしくお願いします

  • 複数ファイルデータを1つに纏めるチェックボックス有

    過去の質問タイトル『複数EXCELファイル中のデータを1つのファイルへ』、『複数ファイルのデータを1つのファイルへ纏めるマクロ』で大変お世話になっている者です。 HohoPapaさんからご教示頂きましたコードで、チェックボックス以外の値については、出力ファイルへ正常に纏める事が出来ました。  更にお伝えして、入力ファイル中のチェックボックス(リンク設定有り)を出力ファイルへ吐き出すマクロのコードをご教示頂きたく質問させて頂きました。 奥が深く、私にはコードを修正出来るだけの力が有りません。 どうか、お教え下さるようお願いいたします。 ・入力ファイルの記載フォーマットは以下の通りになります。 B列=出力ファイルに付けるタイトルは6行目、データは8行目以降より (出力ファイルには数値として吐き出したいが、入力ファイル中の記載は所々数値以外の形式で記載されている) 数値形式でない記載を数値形式で吐き出すのは困難である為、そのまま吐き出し。 C列=出力ファイルに付けるタイトルは6行目、データは8行目以降より D列=出力ファイルに付けるタイトルは6行目、データは8行目以降より E列=出力ファイルに付けるタイトルは6行目、データは8行目以降より F列=出力ファイルに付けるタイトルは5行目、データは8行目以降より G列=出力ファイルに付けるタイトルは6行目、データは8行目以降より出力ファイルへは、日付表示で吐き出し。 H列=出力ファイルに付けるタイトルは6行目、データは8行目以降より 出力ファイルへは、日付表示で吐き出し。 I列=リンク設定の有るチェックボックス   値はオンにチェックがついており、[リンクするセル』=『$Q$8』 J列=リンク設定の有るチェックボックス   値はオンにチェックがついており、[リンクするセル』=『$R$8』 K列=リンク設定の有るチェックボックス   値はオンにチェックがついており、[リンクするセル』=『$S$8』 L列=関数式『=IF(AND(S8=TRUE,OR(Q8=TRUE,R8=TRUE)),"","右欄も要確認")』が入っています。    M列=リンク設定の有るチェックボックス  値はオンにチェックがついており、[リンクするセル』=『$T$8』 N列=関数式『=IF(AND(S8=TRUE,OR(Q8=TRUE,R8=TRUE)),"合同設備等利用可能",IF(T8=TRUE,"合同設備等利用可能","内部運営管轄と相談下さい"))』が入っています。 Q列、R列、S列、T列=8行目以降より『TRUE』、『FLASE』の文字入っている。 出力ファイルの記載フォーマットは以下の通りになります。 1行目のタイトルセルは、 A列=『参加番号』 B列~K列、N列=上記の入力ファイルのタイトルから A列:2行目以降=入力ファイル名の『課題参加者_23RF3001.xlsx』の『23RF3001』を入力ファイルのB列、C列、D列に記載が有る行数分記載。 B列~K列:2行目以降=上記のB列~K列の入力データから吐き出し N列:2行目以降=上記のN列の入力データから吐き出し

  • 複数ファイルのデータを1つのファイルへ纏めるマクロ

    マクロの実行で、Excel形式の約400個のファイル中のデータを1つの出力ファイルへ纏める為のマクロを作成したいのですが、VBAの初心者で、スクリプトの書き方が分からず大変困っております。 入力ファイルの中身は頻繁に追加、削除を繰り返しており、そのたびに入力ファイルを目視確認後、出力ファイルを手動で修正している状況でございます。 大変お手数ですが、マクロがお分かりの方がいらっしゃいましたら、ご教示を宜しくお願い致します。 ・入力ファイルは、以下ような名前になっております。 課題参加者_23RF3001.xlsx 課題参加者_23RF3005.xlsx 課題参加者_23RF3072★.xlsx 課題参加者_23RF3073.xlsx 課題参加者_23RF3199.xlsx 課題参加者_23RF3543.xlsx ・入力ファイルのデータは、添付しました画面イメージの通りで、  フォーマットは全て同じです。 ・出力ファイルに吐き出す入力データはB列~K列とN列になります。 ・出力ファイルのタイトルは、1番目に呼び出したファイルのB列~K列とN列を使う。 ・出力ファイルのA列のデータは、入力ファイル名の『23RF3001』、『23RF3543』などを入力データ分入れる。 ・出力ファイルのタイトルに使う、入力ファイルのタイトルは以下のようになっています。   B列~E列のタイトルは、6行目、7行目が結合されたセルに入っています。  F列のタイトルは、5行目、6行目、7行目が結合したセルに入っています。  G列~H列のタイトルは、6行目、7行目が結合されたセルに入っています。  I列~K列のタイトルは、7行目のセルに入っています。  N列のタイトルは、6行目、7行目が結合されたセルに入っています。 ・出力ファイルへ吐き出したい、入力ファイルデータの範囲は、  B列~K列の8行目以降とN列の8行目以降のデータになりますが、  『職員番号』、『名前』、『部門』に記載が有る行のみを出力ファイルへ吐き出します。  N列はリストの最後の行まで文字が入力されていますが、  N列についても、上記の『職員番号』、『名前』、『部門』に記載が有る行のみを出力ファイルへ吐き出します。 ・出力データへ吐き出す時の書式フォーマットは以下の通りになります。  A列=文字形式  B列=数値形式  C列~F列=文字形式  G列、H列=日付形式  I列~K列=チェックボックス(フォームコントロール形式(入力データと同じ形式))  N列=文字形式 ・入力データは今の所50行まで入力可能としています。

  • 複数EXCELファイル中のデータを1つのファイルへ

    同じシート名、同じフォーマットで記載されている約400個のEXCELファイルから、『Participant List』というシート名のB列~H列、8行目~50行の範囲の記載を1つのEXCELファイルに纏めるVBAスクリプトを作成し実行したいのですが、VBAが全く分からず大変困っております。 マクロを実行した時に、入力ファイルと出力ファイルの保存ホルダーを聞いて指定出来るように出来た良いと思っています。 何方か、お分かりでしたらどうぞお力添えをお願いいたします。 <詳細> ・400個の入力EXCELファイルには、『Participant List』、『特定類型』の2つのシートが入っており、今回の入力用シートは『Participant List』になります。 ・今回抜き出したい記載は、『Participant List』シート中のB列~列、8行目~50行の範囲の記載になります。 ・『Participant List』シート中のB列の6行目と7行目のセルは結合しており、各列のタイトルは以下の通りになっています。  このタイトル名を出力ファイルの1行目へデータの各列のタイトルとして付けて、2行目以降より400個の入力ファイル中のデータを連結したいです。   B列:6,7行=『職員番号(nimsID)』     C列:6,7行=『名前(Name)』       D列:6,7行=『部門(Research Center, Division)』   E列:6,7行=『グループ(Group)』   F列:6,7行=『役職(Title)』   G列:6,7行=『開始年月(Start)』   H列:6,7行=『終了年月(End)』 ・出力ファイル名や出力のシート名は特に考えておりません。 ・入力データは以下ような記載のフォーマットになります。   B列=『職員番号(nimsID)』       例:14769     C列=『名前(Name)』         例:田中 一郎    D列=『部門(Research Center, Division)』 例:総合開発・情報部門   E列=『グループ(Group)』   例:科学リーダー   F列=『役職(Title)』     例:リーダ-   G列=『開始年月(Start)』  例:2023/5/1   H列=『終了年月(End)』   例:2023/5/31 ・入力ファイル名の例=科学登録者_23BB3001.xlsx            科学登録者_23BB3005.xlsx            科学登録者_23BB3405.xlsx ※拙い口足らずな説明となってしまいましたが、どうぞ宜しくお願い致します。

  • マクロのコピペについて

    に実装する際の2回目の処理について助けてください。 Sub Action1or2() Static ChkNext As Boolean If ChkNext = False Then ChkNext = True MsgBox "1回目の押下です。" ' ' Macro1 Macro Range("L9").Select Selection.Copy Sheets("様式2(管理表)").Select Range("C10").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("様式1-1(作業用) ").Select Range("C9:K9").Select Application.CutCopyMode = False Selection.Copy Sheets("様式3(チェック表)").Select Range("B9").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("様式1-1(作業用) ").Select Range("L9").Select Application.CutCopyMode = False Selection.Copy Sheets("様式4(22F倉庫用) ").Select Range("D9").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("様式1-1(作業用) ").Select Else ChkNext = False Call Action2 End If End Sub Sub Action2() MsgBox "2回目の押下です。" 'ここに2回目の実行コードを記述 End Sub 2回目に実行ボタンをクリックした際にSheets("様式1-1(作業用) ")のアクティブセルと("Sheets様式2(管理表"))&"様式3(チェック表)")&"様式4(22F倉庫用) ")のA列にアクティブセルの値とイコールの値がある場合、アクティブセルの2行下の行を選択してコピーを行い、各シートの対象セルの行へ貼り付けをする場合どのような記述をすれば良いかご教示ください。 よろしくお願いします。

  • VBA MSXML2.XMLHTTPで通信エラー

    毎日使用しているシステムにてAccess2003 VBAでの通信で 数日前から突然エラーが出て通信できなくなりました。 下記のSENDの部分で エラー -2416697208 (800c0008)になります。   With CreateObject("MSXML2.ServerXMLHTTP.6.0") .Open "POST", strUrl, False .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" .Send (strParam) strResult = .ResponseText End With 端末の環境はWindows7 ブラウザはIE11 Windows Updateやセキュリティーなど 一切変更などしていないのですが 急にエラーが出る部分がどうしても分からず 仕事に支障が出て困っております。 他のノートパソコンへシステムのこの機能だけを入れると 正常に動いたりします。 ノートパソコンも同じくWindows7 ブラウザはIE11です。 解決方法があればお教え願いたいです。 よろしくお願いいたします。

  • VBAで条件付き書式の文字色

    下記のコードを、条件付き書式で変化した文字色によって作動させたいのですが、変化した赤字を認識せずに作動しません。 どこを修正したら良いでしょうか? Private Sub CommandButton1_Click() Dim cell As Range For Each cell In Range("L28,P28,T28,X28,AB28,AF28,AJ28,AN28,AV30,BC30,BG30,BK30,BO30,BS30,CE28") If cell.Font.ColorIndex = 3 Then ' 赤文字の場合 ユーザフォーム1.Show ' ユーザフォーム1を表示する Exit Sub End If Next cell Range("CI28").Value = "ok" ' セル"CI28"に"ok"を入力する End Sub

  • Hyperlinks.Add について

    ActiveSheet.Hyperlinks.Add Anchor:= と記載して続きを書こうとすると、Anchor:=の :=部分でコンパイルエラー「修正候補:式」と表示されます。 理由が分かれば教えていただきたいです。

  • 全てのコンボボックスに同じchangeイベント

    VBA初心者です。お知恵を貸してください。 UserForm上にある全てのコンボボックス(1つを除く)に同じchangeイベントを適応させたいです。 【動き】 1.UserForm起動 2.フォーム上のSheetComboBoxからシートを選択 3.選択したシートを参照し、フォーム上にシートにある行数分ComboBoxi(変数)_1〜3、TextBoxi(変数)を作成。ComboBoxにシートの値を参照した「文字列 数値」をセット。TextBoxは空欄。 4.ComboBoxi_1〜3が変更されるごとに、TextBoxiにComboBoxの内容の数値部分を計上する。 5.登録ボタンをクリックしてComboBoxi_1〜3の内容をシートの特定列に転記。 3までは作成することができましたが、4で行き詰まってしまいました。 コンボボックスのコントロール名は動的なので、どのようにchangeイベントを書けばいいのか、また、コンボボックスの量が多い(1行3つ*行数分)ので、すべてに対して書かなければならないのか…ということです。 何か一括でchangeできるような方法をご存知の方は教えていただけないでしょうか。どうぞよろしくお願いいたします。

  • タイムスタンプを挿入して、時間の経過に合わせて色

    Q列に同じ行のA列に文字が入ると、タイムスタンプを挿入して、時間の経過と共に、720時間かけて白から赤にグラデーション変化する。 上記のVBAを行いたいのですが、オーバーフローエラーが発生します。どの様に修正すれば良いでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Dim currentDate As Date Dim startTime As Date Dim endTime As Date If Target.Column <> 1 Or Target.Cells.Count > 1 Then Exit Sub If Target.Offset(0, 15).Value = "" And Target.Value <> "" Then startTime = Now() Target.Offset(0, 15).Value = startTime ElseIf Target.Offset(0, 15).Value <> "" And Target.Value = "" Then endTime = Now() Target.Offset(0, 15).Value = "" End If currentDate = Now() If Target.Offset(0, 15).Value <> "" Then Target.Offset(0, 16).Interior.Color = GradientColor(Target.Offset(0, 15).Value, currentDate, startTime, 720) Else Target.Offset(0, 16).Interior.Color = RGB(255, 255, 255) End If End Sub Function GradientColor(ByVal timeStart As Date, ByVal timeEnd As Date, ByVal startTime As Date, ByVal duration As Integer) As Long Dim secondsElapsed As Long Dim fractionTimeElapsed As Double secondsElapsed = DateDiff("s", startTime, timeEnd) ➡︎ fractionTimeElapsed = secondsElapsed / (duration * 3600) fractionTimeElapsed = IIf(fractionTimeElapsed > 1, 1, fractionTimeElapsed) GradientColor = RGB(255 * (1 - fractionTimeElapsed), 255 * fractionTimeElapsed, 255 * fractionTimeElapsed) End Function

  • ユーザーフォームテキストボックスの文字制限

    ダブルクリックでフォームを開くようにしてます。下記のままでしたらテキストボックスに何行でも入力できてしまい、転記先のセルは4行までしか表示ができません。テキストボックスに4行以上入力しコマンドボタンをクリックしたときにメッセージが出てセル値を取得したときに戻ればいいと考えています。説明が不十分ですがよろしくお願いします。 Private Sub UserForm_Initialize() TxtA.MultiLine = True TxtA.EnterKeyBehavior = True GYOU = ActiveCell.Row TxtA.Value = Range("c" & GYOU).Value End Sub Private Sub CommandButton1_Click() GYOU = ActiveCell.Row Range("c" & GYOU).Value = UserForm1.TxtA.Value Unload Me End Sub

  • VBA 修正箇所について

    (※)の行にエラーがでているのですが、何を指摘されているのか、どう直せば良いのかが分かりません。下記の情報だけで何かわかりますか?エラー名はインデックスが有効範囲にありませんです。 '******************************************************************************* '機能名  :指定文字を含むシートを検索し、指定文字を含んだシート名を返す '引数   :指定文字(String型) '戻り値  :指定文字を含んだシート名を返す(String型) '備考   :指定文字を含んだシート名が存在しない場合は"NotFound"が返される '******************************************************************************* Public Function gFnc_strSelectSheet(ByVal strTargetSheetName As String) As String Dim i As Integer, intChkFlg As Integer Dim strResult As String intChkFlg = 0 For i = 1 To Sheets.Count (※)If InStr(Worksheets(i).Name, strTargetSheetName) > 0 Then strResult = Worksheets(i).Name intChkFlg = 1 End If Next If intChkFlg = 0 Then strResult = gcnstrNotFound gFnc_strSelectSheet = strResult End Function

  • VBSについて

    VBSについて質問です。プログラミング初心者です。 既定フォルダ内のファイルを選択したフォルダ内にコピーするプログラムを組みたく、 色々調べながら作成してみましたが、うまくいきません。 症状として、選択したフォルダではなく、 プログラムを保存しているフォルダにコピーされてしまします。 選択したフォルダに保存するためには、どのようにすればいいでしょうか? また、下記コードがうまくいかない理由も解説もしてくださると大変助かります。 C:\strFrom ←既定のコピー元フォルダ C:\strTo  ←プログラム実行時に選択するコピー先フォルダ C:\VBS   ←プログラムを保存しているフォルダ ※ここにフォルダ名「strTo」で「strFrom」内のファイルが保存される Set objFS = CreateObject("Scripting.FileSystemObject") 'ファイルシステムオブジェクト作成 strFrom = "C:\strFrom" 'コピーするフォルダのパス Set shla = WScript.CreateObject("Shell.Application") 'Shellの呼び出し Set strTo = shla.BrowseForFolder(0, "フォルダを選択して下さい", &H1) 'パス取得 WScript.echo strTo.Items.Item.Path '取得パス確認 objFS.CopyFolder strFrom, strTo 'ファイルコピー

  • Visualbasic DatagridView

    Visualbasic 2013 を利用して Windows Formアプリケーションを開発しております。 Form上にPanelを配置し、その中にDatagridViewを配置しております。 ※Anchorを「Top, Left, Right」と指定しております。 このような場合、フォームデザイナで他のコントロールのデザインを編集してリビルドするとDatagridViewのサイズが変化してしまいフォームのサイズよりも大きくなる事象が発生しております。 大変お手数お掛けいたしますが、何か原因/対策などわかる方がいらっしゃいましたらご教授頂けますと幸いです。

  • マクロ

    シート上のCommandButton1を押すと、a2:d3までのセル内に赤字があれば、ユーザーフォーム1が起動する、セル内の赤字が緑になる  上記のようなマクロは可能でしょうか? マクロ初心者ですので、サンプルコードがあれば助かります。

  • Datagridviewで例外

    データベースよりデータ抽出しDatatableにセットしデータグリッドビューのDatasourceにセットしてデータ表示しております。 以下のような制御を実施するとデータが表示されない事象が致しました。 大変お手数お掛けいたしますが何か解決策が分かる方がいらっしゃいましたらご教授頂けないでしょうか。 (1)データベースよりデータ抽出しDatatable(dt1)にセット (2)データグリッドビューのDatasourceにセット→データが表示される (3) (1)のデータテーブルにDatatable.Select(抽出条件) (4)別のデータテーブル(dt2)に(3)の結果をCopyToDataTable (5)データグリッドビューのDatasourceにセット→何も表示されない

  • VBA進捗状況を可視化(数値)で

    お願いします。いま以下の作業をかりに1000回繰り返し、なおかつ その進捗状況を可視化(数値で)する一番簡単な記述は どのように書けばいいのでしょうか。実行の順番も併せて VBA上級者の方、よろしくお願いいたします。 Sub 移動() ' ' 移動 Macro Range("D6:D15").Select Selection.Copy Range("H6").Select ActiveSheet.Paste Columns("G:G").Select Application.CutCopyMode = False Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range("C2").Select End Sub

  • エクセルVBAでOutlookにリンク設定

    メール本文にファイルの保存場所を記載し、クリックでファイルが開くようにしたいのですが、どうすればいいでしょうか。 幾つか試しましたがうまくいきませんでした。 Cells(5, "AK")=C:\Users\taro\Documents\エクセル.xlsxとした時 Sub メール() 'Outlookの定義 Set myOutLook = CreateObject("outlook.application") Set Omail = myOutLook.CreateItem(olMailItem) 'メール作成 With myitem Omail.BodyFormat = 2 ①.HTMLBody = .HTMLBody & "<a href=file:\\\""" & Cells(5, "AK") & """>意見書1</a>" & "<br>" →\\\以降の番地が表示されない ② .HTMLBody = .HTMLBody & "<a href=""" & Cells(5, "AK") & """>意見書2</a>" & "<br>" →<C:\Users\taro\Documents\エクセル.xlsx>と表示されるがリンクされない。 ローカルドライブとサーバーでは書き方が違うようです。 自分が最終的にしたいのはサーバーに保存しているファイルをクリックで開くことです。 正しい書き方をご教示ください。よろしくお願いいたします。

  • VB2015

    VisualBasic2015で変数の宣言の仕方を教えてください。

  • VBAでOutlookの文面の一部を赤にする方法

    記のようなコードでエクセルVBAでOutlookメールを作成する際、「期限:10月30日」の部分だけを赤にする方法を教えてください。 <font color = ""#ff0000"">" & "期限:10月30日" & "</font>" このようなコードを使うようなのですが、下記にどのように変更すれば動くのか教えてください。 Sub メール() 'Outlookの定義 Set myOutLook = CreateObject("outlook.application") Set Omail = myOutLook.CreateItem(olMailItem) 'メール作成 Omail.BodyFormat = 2 Omail.Subject = "意見記入のお願い" 'subject Omail.Body = Omail.Body & "いつもお世話になっております。" & vbCrLf Omail.Body = Omail.Body & "下記の申請が提出されました。" & vbCrLf Omail.Body = Omail.Body & "期限:10月30日" Omail.Display End Sub