Visual Basic

全22586件中141~160件表示
  • エクセルワークブックの数だけ処理を繰り返したいです

    excel vba(マクロ)についての質問です。 元のフォルダには、複数の.xlsxのワークブックがあります。この各ワークブックのワークシート1のA1に”〇月見積書”と記載があり、これらを元のフォルダと同じフォルダに各ワークブックのワークシート1のA1に記載があるファイル名にし、かつ、csvにして保存し、同じファイル名になったら、連番にしたいです。 例えば、"11月見積書(1)"の様に。そして、元の.xlsxの数だけ連番にしたいです。 元のフォルダにある.xlsxをカウントしてその分だけ繰り返せばいいと思うのですが、連番が永遠と繰り返されてしまい、出来ません。 各.xlsxをワークブックのワークシート1のA1に記載があるファイル名にし、そして、この.xlsxの分だけ.csvに変換するには、どうすればいいでしょうか? dim f as string dam i as long dim tem as string tem = thisworkbook.sheets(1).range("A1") & "¥" f = dir(tem) if f ="" then f= tem else do while f<>"" i = i+1 f= dir(tem& "(" & i &")" & ".csv") loop f =tem & "(" & i &")" & ".csv" end if activeworkbook.save as filename:=tem & "(" & i &")" & ".csv" お手数ですが、宜しくお願い致します。

  • なぜか正常にマクロが動いていない?

    Sub 横から縦へ() Dim ii As Long, i As Long Application.ScreenUpdating = False For ii = 2 To Cells(1, Columns.Count).End(xlToLeft).Column i = Application.CountA(Columns(ii)) If i > 0 Then Cells(1, ii).Resize(i).Copy Cells(Rows.Count, 1).End(xlUp).Offset(1) End If Next ii Application.ScreenUpdating = True End Sub こちらは、B列からある記入をA列の下へと集約させるマクロです。 これで、横にずっとあるセル達をA列の縦に集約していました。 ですが、なぜかB列以降の最後の行が集約されません。 B列からずっと右の列の最後には、 ----- -------- という記述があります。(-----と--------の間に2セル開け) 上記のマクロで、 ----- -------- を集客させると、 ----- が最後になり、 -------- が集約されません。 2セル開いてるからかと思い、セルを開けずにマクロを動かしたら、 -------- が省略されて、集約されました。 まるで、 -------- を避けているかのようです。 -------- これが入らないとならないのですが、省略されると困ります。 -------- これもちゃんと集約されるようにするには、どのようにすればよいでしょうか? エクセル2016です。 よろしくお願いいたします。

  • VBAで複数ファイルのページ数出力

    Win10のOffice365のExcelを使用しています。 GetOpenFilenameで選択した複数のExcelファイルのファイル名+印刷ページ数を マクロを実行したファイルに出力するというマクロを作成しました。 マクロを実行する度に既存データがあれば追加されていくようにしたいのですが、上手くいきません。 それどころか、実行時も複数ファイル選択したにも関わらず、 1ファイルのデータしか出力されない状態です。 実行後のイメージは添付ファイルの通りです。 (A1、A2はデフォルトで入力しています。) 勉強を始めたばかりなので改善点もあれば、教えて頂きたいです。 よろしくお願い致します。 ================================================= Option Explicit Sub pagecount() Dim Page As Long, cnt As Long, xlcnt As Long Dim fs As Variant, path As Variant Dim Fname As String Dim i As Integer Dim wb1 As Workbook, wb2 As Workbook Dim sh As Worksheet With CreateObject("WScript.Shell") .CurrentDirectory = ThisWorkbook.path End With fs = Application.GetOpenFilename(filefilter:="Microsoft Excelブック,*.xls*", MultiSelect:=True) If IsArray(fs) Then For Each path In fs Set wb1 = Workbooks.Open(path, , True) Set wb2 = ThisWorkbook Do Until (Fname = "") Page = 0 For Each sh In wb1.Worksheets Page = Page + sh.PageSetup.Pages.Count Next sh xlcnt = Cells(Rows.Count, 1).Row cnt = Cells(xlcnt, 1).End(xlUp).Row If wb2.ActiveSheet.Cells(cnt, 1).Value <> "" Then wb2.ActiveSheet.Cells(cnt, 1).Value = Fname wb2.ActiveSheet.Cells(cnt, 1).Offset(0, 1) = Page wb1.Close savechanges:=False Fname = Dir() cnt = cnt + 1 End If Loop Next path End If End Sub

    • noname#259368
    • 回答数2
  • ADOX Append Null許可フィールド作成

    お世話になります。 既存テーブルにフィールドを追加したところNull不許可で作成されました。 Dim CAT As ADOX.Catalog CAT.Tables("TM住所録").Columns.Append "年賀状", adVarWChar, 2 検索したところ次のようなサンプルがあったのですが、下のエラーになります。 CAT.Tables("TM住所録").Columns("年賀状").Attributes = adColNullable 実行時にエラー -2147217887 複数ステップのOLE DBの操作でエラーが発生しました。 各OLE DBの状態の値を確認して下さい。作業は終了しませんでした。 appendで追加したフィードをNull許可にするにはどうしたらいいでしょうか? よろしくお願いいたします。

  • DataGridViewでitemを指定してデータ

    DataGridViewでitemを指定してデータを取得する事はできますか? 下記のように座標を指定して取得する方法はわかります。 Dim IntItem1 As Integer = DataGridView1(j, i).Value DataSetの場合は、DataRowに落として取れます。 Dim DataRow1 As DataRow = DataSet1.Tables("Table1").Rows(0) Dim IntItem1 As Integer = DataRow1("Item1") 同じノリで DataGridViewからアイテムを指定してデータを取得したいのですが下記のような事はできませんでした。 Dim DataGridViewRow1 As DataGridViewRow = DataGridView1.Rows(0) Dim IntItem1 As Integer = DataGridViewRow1("Item1") ← エラー 書き方があれば教えて下さい。

    • webuser
    • 回答数2
  • vb2022 Resourcesの中のエクセルの扱

    vb2022 Resourcesの中のエクセルの扱い方を教えて下さい サンプルに貰ったvb(フォームアプリケーション)のソースには Resourcesの中にエクセルファイル(エクセル1.xlsx)があります。 そのエクセルをプログラム内でコピーして、一部のセルの値を書き換えて出力しています。 Dim strFileName As String = "c:\出力するエクセル.xlsx" My.Computer.FileSystem.WriteAllBytes(strFileName, My.Resources.エクセル1, False) 同じことをしたいのですが、Resourcesのエクセルの扱い方がわかりません。 まず、あらかじめ用意した『エクセル1.xlsx』をResourcesの中に置く方法がわかりません。 エクスプローラを開き 場所、プロジェクト名のフォルダResourcesフォルダとたどり、Resourcesフォルダの中に『エクセル1.xlsx』を置きました。 置いただけではVBのエディタ(ソリューションエクスプローラ)からは見えません。 ソリューションエクスプローラのResourcesで右クリックし、追加、既存の項目、で、今置いた場所(Resourcesフォルダの中の『エクセル1.xlsx』)を選ぶと ソリューションエクスプローラのResourcesの下に姿を現しました。 ここまでのやり方があってるのか分かりません。 次に コードを書くところ(ボタン押下とか)で Dim strFileName As String = "c:\出力するエクセル.xlsx" My.Computer.FileSystem.WriteAllBytes(strFileName, My.Resources.エクセル1, False) を書くと My.Resources.エクセル1 の部分がエラーになります。 サンプルに貰ったvbでは、 『My.Resources.』まで手で打つと候補に『エクセル1』などが挙がってきますが 一から作った分は候補が出てきませんし、エラーになります。 どこかで、 (略)\Resources\エクセル1.xlsx と My.Resources.エクセル1 の紐づけが必要なのだと思いますが、どこで何をすればいいのか分かりません。

    • webuser
    • 回答数2
  • VBA 可視セルのみをoffsetで移動

    VBA 可視セルのみをoffsetで移動したいです。 AutoFilterで表示した"A列の"可視セルのみを、1セルずつoffsetで下方向に移動したいです。  AB 1○○ 2○✕ 3✕○ 4○✕ 5 ・ ・ ・ これにフィルタをかけ、 ○ のみを表示すると  ▼  AB 1○○ 2○✕ 4○✕ 5 ・ ・ ・ になりますが、 range("A1").offset(1,0).select で1セルずつ順に下へ降りていくと 非表示のA3も選択されてしまいます。 どうすればよいでしょうか?

  • Vbaで設定時間経過後に動作させたい

    コマンドボタンが1と2があります。 1をクリックした10秒後に2を赤色にしたいのです クリックで赤色にするのはif文でbackcolor=RGBでしていましたが タイマーで動作させたいのです。 ネットで調べるとsleepを用いる、とか書かれて色々 試しましたが出来ませんでした。 さらに出来ればシート上にカウントダウンも表示できれば 嬉しいです。 お助けください、よろしくお願いします。

  • vb2022 Deployment project

    visual stdio2022 visual basic deployment project propertiesでインストーラを作成したときに Setup1\Releaseの中に Setup.exeとSetup1.msiができます。 どちらも同じ動きをしますが、Setup.exeは単独では動作できず、Setup1.msiを求めてきます。 Setup1.msiは単独でインストールできます。 この違いは何ですか? 結論的に同じ環境に配布するならSetup1.msiだけで良いという事ですか?

    • webuser
    • 回答数1
  • vbaのコマンドボタンを同時にクリック

    コマンドボタンが4つあります コマンドボタン 1〜3は個別でクリックすると色が変わります(赤→青、青→赤) 4を押すと 1〜3全ての色を変えたいのです。 しかも出来れば青に統一したいのですがどのようにすればいいのでしょうか。

  • (セルに)1文字入力される度に検索したい(エクセル

    Private Sub Worksheet_Change(ByVal Target As Range) 'A1が変化したら If Target.Row = 1 And Target.Column = 1 Then Call Samplex End If End Sub 今は、上記プログラムで、A1に変化があったとき(文字を入力してエンターを押したとき)に、A列の各行の文字列を検索し、該当した行を表示させています。 これを、エンターを押さなくても、1文字入力するたびに、自動で検索結果が表示されるようにしたいです。 例 A1に「あ」と入力 あ あい あいう という文字列のある行が表示され さらに「あい」と入力すると、 あい あいう という行が表示される。 どなたかよろしくお願いします。

    • noname#257017
    • 回答数3
  • 比較のマクロについて(エクセル)

    vbaについておしえてください。 シート1とシート2を比較して不一致がある項目にに色をつけたいです。 例えばですがシート1の 1行目の番号1and 品名りんごand金額 1 (3セット) の3箇所のデータがシート2になければ、色をつけたいのです(シート1に) 初心者のためコードをご教示いただけますと幸いです。 宜しくお願い致します。

  • VBA ブックを閉じる操作をすると勝手に開く

    おはようございます。 VBAにて指定したエクセルファイル (ファイル名 Aとさせてください)を1分後に閉じるコードを 記載し、自動的に1分後に閉じるようにしているのですが 問題点が有ります。 実際に、1分経過すると指定したファイルは閉じるので 処理上は問題ないのですが 1分経過する前に自分で勝手に閉じた場合には ファイルを閉じてから1分後くらいに 勝手にAのファイルが開かれてしまいます。 勝手にAのファイルを開かれないようにしたいのですが どうすればよろしいでしょうか? コードを記載しますのでご指摘お願いいたします。 標準モジュールに記載 Sub 終了() Unload UserForm1’開いているユーザーフォームを閉じます。 Workbooks("A.xlsx").Close SaveChanges:=True’Aのファイルを上書き保存してから閉じます。 End Sub ThisWorkbookに記載 Private Sub Workbook_Open() UserForm1.Show 'ユーザーフォームを開く Application.OnTime Now + TimeValue("00:01:00"), "終了" ’1分後に指定したファイルを閉じます。 End Sub すいませんが回答よろしくお願い致します。

  • outlook vba 文中の文字列取得

    outlook vba 文中の文字列取得 本文中に、 日付:9/10 名前:田中 住所:東京 とあるとき、田中 を取得したいのですが、 名前: から改行までの文字列について、 Mid(objItem.Body, InStr(objItem.Body, "名前:") + 4, (InStr(InStr(objItem.Body, "名前:"), objItem.Body, vbCrLf))) で取得しようとしましたがうまくいきません。 田中からあとすべてが取得されてしまいます。 何か間違っていますでしょうか?

  • チェックボックスに関して(vba)

    VBA初心者のためコードを教えてくれますと助かります。 シート1にリストが記載されています。 チェックボックスで選択されている値を取得して(シート1のA列の商品名から)、チェックされている値のデータを転記するようなコードを作成したいと思っております。(別途シート追加する) 知識不足でうまく動きません。よろしくお願いします。

  • VBAに関して質問です

    VBA初心者のため教えてくれますと助かります。 シート1にリストが記載されています。 チェックボックスで選択されている値を取得して(シート1のA列の商品名から)、チェックされている値のデータを転記するようなコードを作成したいと思っております。(別途シート追加する) 知識不足でうまく動きません。よろしくお願いします。

  • Excelのworkbookの各sheetを分割

    Excelのworkbookの各sheetをそれぞれ単独のworkbookにばらかすVBAを教えて下さい。

  • vbaでifの使い方について

    if textbox1=1 then textbox 2 >=30 要するtextbox1に数字の1を入れるとtextbox2には30以下の数字しか入れられないことを表したいのですが >=の表記はできないのですかね  何かあればご教授ください

  • excel VBA 散布図 Xの値を表示させる

    タイトルの通り excelの散布図においてデータラベルを表示した際にXの値も表示させたいと考えております。 .ChartObjects(1).Chart.SeriesCollection(1).HasDataLabels = True とするとデフォルトではYの値のみ表示されています。 Excel上でデータラベルの書式設定→ラベルオプション→Xの値(X)から表示させることは出来るのですが、これをVBAで指示したいと考えております。 自信が調べた限りではヒントとなるような情報が見当たらなかったため、ご存知の方がいらっしゃいましたらご回答をお願い致します。

    • sk8577
    • 回答数2
  • VBA オートフィルの操作方法

    VBAで使用するオートフィルの指定方法がわかりませんでしたので 質問いたします。 やりたいこと セルがAとBセルが一番下まで結合されている状態 (A1とB1セル結合・A2とB2セル結合・・・) にて、セル(A5とB5が結合されたセル)を選択し 何も数字が無ければ、数字があるセルまで選択する (この場合End(xlUp)にて数字がある一番上のセルを選択する) そのあと、セル(A5とB5が結合されたセルの一つ上)まで オートフィルをしたいのですが 下記のコードだと実現できませんでした。 おそらくrange指定がキチンとできていないのと セルが結合されているのも要因の様な気がします・・・ すいませんが実現できるコード記載お願いできますでしょうか。 回答宜しくお願い致します。 Cells(5, 1).End(xlUp).Select Selection.AutoFill Destination:=Range(Cells(5, 1).End(xlUp), Cells(5, 1).Offset(-1, 0)), Type:=xlFillCopy