AccessVBAで、フォームをダイアログで開いているはずが処理が流れてしまう

投稿者: Anonymous お世話になります。 AccessのVBAで、フォームをダイアログで(そこでブロックして)表示しようとしているのですが、どうやってもそのまま処理が流れてしまいます。 行っていることは、 プロパティでは ・ポップアップ = はい ・作業ウィンドウ固定 = はい 実際にコードで表示する際には、 DoCmd.OpenForm “F_Floor”, , , , , acDialog と 記述しています。 これだけの設定でできるはずなのですが、他に何か原因がありますでしょうか。 下記にその部分コードを記述します。 For cnt = 0 To 3 MsgBox “” & cnt & “階です。” DoCmd.OpenForm “F_Floor”, , , , , acDialog MsgBox “a” Next 『○階です』の部分が出てから『a』が、F_Floorの終了を待たずに出てしまいます。 Accessのバージョンは2010です。 よろしくお願いいたします。 解決 DoCmd.OpenForm は、第1引数のフォーム名以外は省略可能です。そのため、第2引数以降は引数名を明記しなくてはなりません。 DoCmd.OpenForm “F_Floor”, , ,…(Continue Reading)

VBAでダイアログボックスから選択したファイルのパスを取得するには

投稿者: Anonymous VBAで<開く>ダイアログボックスから選択したファイルのパスを取得する方法についての質問です。 VBAで<開く>ダイアログボックスからファイルを選択は、下記のように実現しました。 strFileName = MacScript(“Choose File”) ファイルパスを取得しようとしたのですが、構文エラーとなり、パスが取得できません。 MsgBox strFileName intFF = FreeFile Open strFileName For Input As #intFF  ←ここでエラー strFileNameをウォッチ式で確認すると、下記のようになりました。 解決 VBA自体でもファイル選択ダイアログを出す事ができますので以下の様にすれば取得することができます。 Falseが返った場合、ダイアログでキャンセルされています。 Dim strFilename As Variant Dim intFF As Integer strFilename = Application.GetOpenFilename Debug.Print strFilename if strFilename = False then Exit Sub intFF = FreeFile Open strFilename For Input As #intFF Input #intFF,…(Continue Reading)

親excelからShellで子excelを起動し、子excelが処理した後、親excelの処理を継続したい

投稿者: Anonymous お助けください excel2010で上手く動いたマクロが、excel2016だと上手く動きません。 親excelから、子excelを自動起動し、子excelのマクロが動き自動終了し、 その後、親マクロの処理を継続したいと考えています。 再現方法 1つのフォルダの中にmother.xlsm(親excel)とchild.xlsm(子excel)を作成し、 それぞれのファイルに下のプログラムを設定します。 その後、親excelのマクロを実行します。 ■caseA Windows7+Excel2010環境だと、親excelから子excelを起動することに問題ない。 ・子でApplication.Quitすると、子ブックだけ閉じて、親のマクロは継続する(finを表示する) ■caseB Windows10+Excel2016環境だと、親excelから子excelを起動すると問題ある。 ・子でApplication.Quitすると、親子のブックが同時に閉じる ・子でApplication.QuitせずにThisWorkbook.Closeすると、子ブックだけ閉じて、  親のブックは閉じないけど親のマクロが止まる(finが表示されない) ・本当は、caseAの様に、子ブックだけ閉じて、親のマクロを継続したい(finを表示したい) ▼mother.xlsm(標準モジュール) Private Declare PtrSafe Function OpenProcess Lib “kernel32” (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPtr Private Declare PtrSafe Function GetExitCodeProcess Lib “kernel32” (ByVal hProcess As LongPtr, lpExitCode As Long)…(Continue Reading)

Excel VBA の1回の実行で、通過した通過しなかったfunction、subを分類する方法を教えて下さい

投稿者: Anonymous 全てのfunction, subに一行ずつ debug.print”function1通過” と書く方法しかありませんか? 書くとしたら、正規表現置き換えの方法で、対応可能ですか? 全エクスポートで、エディタの正規表現置換後、全インポートを予定しています。 例) 全てのfunction, sub2行目に debug.print "なまえ通過” を挿入する方法がありますか? 他言語でも、アドバイスをいただけると、助かります。 よろしくお願いします。 Sub Auto_Open() call aa end sub sub aa end sub sub bb end sub 通過したsubはAuto_Openとaa 通過しなかったsubはbb 解決 Fumu 7さんの回答の実装例です。 awkを使っています。WSLで確認しました。 引数で指定したbasファイルのSubとFunctionの定義の後にdebug.printを埋め込みます。変換結果は元のファイルの先頭にDebug_を付加したファイルに書き込みます。 書き込む内容はファイル名、行番号、定義の行です。 ※プロパティのアクセサは対象としていません。 【debug.print埋め込みスクリプト】 #!/bin/sh conv_bas(){ file=$1 awk ‘{ print $0 } /^Sub/||/^Function/{ sub(/r/,"") printf(" debug.print("%s:%s:%s")rn", FILENAME, FNR, $0);…(Continue Reading)

¿Cómo desproteger una pestaña de excel protegida con contraseña?

publicado por: Anonymous Tengo un Excel antiguo que en su día fue protegido con clave para la hoja, de manera que no se puede modificar el ancho de columnas ni introducir nuevos gráficos. Además las fórmulas no aparecen en la barra de fórmulas. Ahora es necesario modificarlo pero no tengo la clave de protección. ¿Sabe…(Continue Reading)

VBA シート1のA7、C7、シート2のA2の”2020″03″01″の数値を合算させyyyymmddの”20200301″と数値でセルに表示する手法

投稿者: Anonymous 前提・実現したいこと VBAで転換マクロツールを創っています。 いま、画像に示すようにVBAでシート1のA7、C7、シート2のA2の3つのセルの数値を合算させて、 シート2のA2のセルに”20200301″と表示するVBAを組んでいます。 40行目にstr = FormatYYYYMMDD(Sheets(Sheet1).Range(“A7”), Sheets(Sheet1).Range(“C7”), Range(“A2″))というコードを追加した所、 38行目のsh.SaveAs Filename:=”C:Work出力先test.csv”, FileFormat:=xlCSVのコードで、1004エラーが出ます。 原因・改善法などおわかりになれば教えてください。 [VBA] [シート1] [シート2] 発生している問題・エラーメッセージ 実行時エラー’1004′ ‘SaveAs’メソッドは失敗しました:_’Worksheet’オブジェクト 該当のソースコード Public Sub FileUpload() ‘ファイル選択ダイアログモジュール Dim fType As Variant Dim fPath As Variant Dim str As String ‘yyyymmdd出力用 ‘※選択できるファイルの種類はエクセルファイルのみ fType = “Microsoft Excelブック,*.xls?” ‘※ ‘ファイル参照ダイアログの表示 fPath = Application.GetOpenFilename(fType, , “”) ‘fType = fPath。 Debug.Print…(Continue Reading)

¿Cuál es la diferencia entre el evento Activate y el evento Initialize? Excel VBA

publicado por: Anonymous Es lo mismo usar un formulario en el cual tendré un listbox con datos cargados: Private Sub USerform_Initialize() End Sub Que el mismo formulario con: Private Sub Userform_Activate() End Sub solución Son dos eventos totalmente distintos. Initialize(), es un evento que se ejecuta la primera vez que se crea el formulario o…(Continue Reading)

vba 型が一致しない

投稿者: Anonymous ExcelのVBAで特定の文字の最終行と最初の行を探す方法で、file.xlsmのデータから範囲してtbl_data.xlsファイルにデータを貼り付けるVBAですが、このコードだと型が一致しないとエラーが表示されます。 どのように修正すればいいでしょうか。 Sub try() Dim r As range Dim rr As range Dim aju As range Dim ajuu As range Dim aku As range Dim akuu As range Set r = Columns(“D”).Find(“T140420001”, After:=range(“D” & Rows.Count)) Set rr = Columns(“D”).Find(“T140420001”, After:=r, SearchDirection:=2) Set aju = Columns(“AJ”).Find(“Upper13”, After:=range(“AJ” & Rows.Count)) Set ajuu = Columns(“AJ”).Find(“Upper13”, After:=aju,…(Continue Reading)

¿Cómo escribir en celdas excel referencias en lugar de valores con una macro?

publicado por: Anonymous Quiero utilizar la referencia de celdas (como un puntero en C++) y no sus valores absolutos en VBA en celdas que varían en función de una otra valor. He hecho lo siguiente con Cells(x,y).Value pero me da la valor absoluto cuando quiero el equivalente de =$A$1$ por ejemplo. Cells(8 + i, 6…(Continue Reading)

VBA から (Strawberry Perlに入っている) GCC で作る関数 (DLL) を呼び出したい

投稿者: Anonymous VBA から (Strawberry Perlに入っている) GCC で作る関数 (DLL) を呼び出したいのですが、何から調べれば良いですか? ご指導よろしくお願いします。 解決 Strawberry Perlに同梱されているgccはMinGW-w64のようなので、その辺のキーワードで検索した記事が参考になるでしょう。 mingw-w64 GCC for Windows 64 & 32 bits Some Projects using Mingw-w64 Strawberry Perl (bundles C toolchains) 単に最小限のソースからDLLを作って呼べるように試したプロジェクト例 rdinse/MSAccessSQL_DLL.md 少し古いかもな記事 VB6, VBA の文字列 String を返す DLLを作成する 32bit版での記事 DLL compiled from C source code. Not able to use in excel VBA. File not…(Continue Reading)

Detectar la ultima celda que tiene valor con VBA

publicado por: Anonymous Estoy haciendo una macro en excel En la hoja1 del libro de excel tengo el formulario con el que capturo la información, y en la hoja2 se debe guardar esa información leída Hoja1 (Formulario de captura): Hoja2 (Información capturada): Los datos si los lee bien pero el problema viene al pasarlos a…(Continue Reading)

Como insertar una nueva fila con datos en una hoja de Excel

publicado por: Anonymous Vengo buscando ayuda en un código que me esta complicando bastante ya que debo usar (al menos eso creo) el método Range. Find, el cuál no he logrado saber como funciona. Lo que requiero es un código con el cual se puedan introducir nuevas filas en blanco en una hoja de excel,…(Continue Reading)

VBA Seleccionar elemento html por classe

publicado por: Anonymous Necesito acceder a el valor de un input y hacer click en otro con una macro de Excel y necesito seleccionar los inputs mediante su clase, pues no tienen id. He visto googleando que existe el metodo .getElementByClassName() pero no hay manera de que funcione. Ni tansolo accediendo al supuesto primer elemento…(Continue Reading)

AutoCAD VBAでダイナミックブロックの名称が検索されません。

投稿者: Anonymous Autocad 2008 を使用しています。 図面内にダイナミックブロックがあり、移動や回転を行いたいのですが、 VBAでダイナミックブロックを操作の対象とするために、名称を比較しながら行っています。 For Each objEntity In ThisDrawing.ModelSpace ‘ 取り出された図形が対象を判定 If objEntity.ObjectName = “AcDbBlockReference” Then If objEntity.Name = “ダイナミックブロック1” Then ‘ 対象物を回転 rotationAngle = rrangle objEntity.Rotate jiku1, rotationAngle ダイナミックブロック名称を、”ダイナミックブロック1”としているのですが検索されません。 “*U11″や”*U33″で検索されます。 どなたかご教授いただけないでしょうか。 よろしくお願いいたします。 解決 VBAはわかりませんが、AutoLispとAutoCADのランタイムについてそれなりに知っているのでご回答いたします。まずダイナミックブロックは例えばグリップでストレッチしたりすると名前が*Uで始まるブロック名(匿名ブロック)に変化するのはご存知ですね。 http://lee-mac.com/effectivename.html 上記サイトにlispの例ですが、ダイナミックブロックの名前を得る方法が書かれており、おそらくVBAならば objEntity.EffectiveName なるプロパティが使用可能ではないでしょうか?バージョンなどによって使用できない可能性などがあると思いますがお試しください。 また通常のブロックにはこのプロパティがない可能性があると思いますので、上記の通りif文で処理を分岐してあげてください。 回答者: Anonymous

AutoCADでブロック名称を変更したい

投稿者: Anonymous お世話になっております。 AutoCAD2008 VBAについての質問です。 現存するブロックの名称を変更したいのですが、方法がわかりません。 現状、下記のようにプログラムを作成しています。 Dim objEntity As AcadEntity For Each objEntity In ThisDrawing.ModelSpace ‘取り出された図形のAutoCADクラス名により対象か否かを判定 If objEntity.ObjectName = “AcDbBlockReference” Then For iii = 1 To 1000 ii = 1000 – iii + 1 If Val(Right(objEntity.Name, 3)) = ii Then charln = Len(Str(Val(Right(Str(ii), 3)) + 1)) juki_edaban = Right(“000” + Right(Str(ii + 1), charln…(Continue Reading)

セルのクリックでセルを着色・脱色し、範囲選択で一括脱色したい

投稿者: Anonymous やりたいことはタイトルの通りです。 コードと問題点は以下の通りです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) ‘複数選択したセルを着色 ‘下記2行を有効にすると、下記2行含む、以下全てのコードが機能しなくなります。 ‘下記2行を無効にすると、複数選択したセルの脱色が有効になり、クリックしたセルも着色されます。 If Target.Count <= 1 Then Exit Sub Target.Interior.ColorIndex = xlNone ‘「Row」と入力しても、なぜか自動で「row」になります ‘その上、指定した通りの範囲条件が適用されません If Target.row >= 11 And Target.Column >= 6 Then Exit Sub Select Case Target.Interior.ColorIndex ‘クリックしたセルの色が Case Is = xlNone ‘無色の場合は Target.Interior.ColorIndex = 3 ‘「3」赤色に着色 Case Else ‘それ以外の色の場合は Target.Interior.ColorIndex = xlNone…(Continue Reading)

outlook VBAを使用した最新メールの添付ファイルを特定のフォルダへ取り込む方法

投稿者: Anonymous 下記のページを参考に、「あさ」というフォルダ内の最新受信1件の添付ファイルを対象(C:保存フォルダ) へ保存できるようにしようとしています。 https://tonari-it.com/outlook-vba-mail-attachment-saveasfile/ https://tonari-it.com/outlook-vba-subfolder-mail-attachmentfile/ 素人目で Set objItem = がフォルダ内の最新を選択できれば動くように感じますが、このままだと For Each objAttachment In .Attachments でエラーが出てしまいます。 修正方法を教えていただきたいです。 ここからコード Sub SaveAttachmentFile() Dim objItem As Object Dim objIns As Inspector Dim strFile As String Dim strPath As String Dim objAttachment As Object Set objIns = Application.ActiveInspector Set myNamespace = GetNamespace(“MAPI”) Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox) Set objItem…(Continue Reading)

Como Hacer click a un boton web desde excel que no tiene ni id, ni name?

publicado por: Anonymous Necesito en Excel (vba) hacer una macro o robot para ingresar unos datos en una pagina web tomando como valores un listado de data (cedula y fecha) que tengo en una hoja de Excel, esos parámetros ya lo logre pasar al formulario con esta elemento “IE.Document.getElementById”, pero al intentar darle click al…(Continue Reading)

VBA 実行時エラー’91’の解決法

投稿者: Anonymous 前提・実現したいこと VBAでエクセルの勤務表から勤務日等を抽出し、別のソフトウェアに読み込ませる転換マクロツールを作っています。 エクセルの勤務表のシートから、VBAツールのシートに勤務日を抽出転換する機能を実装中に以下のエラーメッセージが発生しました。 発生している問題・エラーメッセージ 実行時エラー’91’ オブジェクト変数またはWithブロック変数が設定されていません。 該当のソースコード ‘ファイルの選択ダイアログを表示して ‘ファイルのパスを取得します Private Sub btnGetFilePath() Dim fType, prompt As String Dim fPath As Variant Dim ws As Worksheet Set ws = Worksheets(“Sheet1”) ‘選択できるファイルの種類はすべてのファイル fType = “” ‘ダイアログのタイトルを指定 prompt = “Excelファイルを選択して下さい” ‘ファイル参照ダイアログの表示 fPath = Application.GetOpenFilename(fType, , prompt) If fPath = False Then ‘ダイアログでキャンセルボタンが押された場合は処理を終了します End End If ‘B2セルにファイル名をセット…(Continue Reading)

¿Cuál es la manera más rápida de comparar dos columnas distintas? Macro VBA

publicado por: Anonymous quisiera pedir su ayuda para lograr comparar 2 distintas hojas de Excel mediante una macro. Actualmente estoy usando un ciclo for para recorrer ambas columnas y hacer una comparación. Esta forma es efectiva, pero tarda demasiado. Tengo que analizar más de 3000 registros. Sub btnValidar() Dim UltCol As Integer Dim ultimaFila, uultimaFila,…(Continue Reading)

Modelo SII: Enviar datos al Web Service usando vba

publicado por: Anonymous Intento conectar al Web Service de la AEAT (SII) para enviar ficheros XML. Llevo un tremendo tiempo de investigación y pruebas, pero estoy muy cerca del abandono, o posponerlo hasta que haya mas información en la red Para el envío, estoy intentando utilizar la librería SERVERXMLHTTP Este sería el código: Dim oWS…(Continue Reading)

Crear ComboBox en las celdas de Excel con VBA (no con UserForm)

publicado por: Anonymous Tengo una duda, soy un poco novato con Visual Basic para Excel pero he hecho cositas, sin embargo ahora tengo una duda. Primero quiero crear un Select o Lista desplegable o ComboBox (Como quieran llamarlo) pero no quiero hacerlo con UserForm pues este me despliega una ventana sobre las celdas y lo…(Continue Reading)

VBAからvisioのShape.Nameに整数値を代入したい

投稿者: Anonymous visioのVBAから、取得したshapeオブジェクトのNameプロパティに整数値を代入すると 原因不明の小数値も一緒に代入されてしまいます。 cStr関数を用いて代入しても結果は変わりませんでした。 objShape.Name = 2 上記のようにshapeオブジェクトのNameに2を代入して、オブジェクト情報を見てみると2.872が 入ってしまっています。 どのようにすれば整数値をそのまま代入することが出来ますでしょうか。 宜しくお願い致します。 解決 質問の件 確認してみましたが、Visio Online でも Visio Professional 2016 でも 現象は再現しませんでした。 ちゃんと指定されたような名前に変更されました。 どのバージョンの Visio で発生した事象でしょうか? たしかに Name だけ変更しても NameU が変更されないという現象が発生したので、 リンク先にあるように Name と NameU の両方を変更した方がいいようですね。 あと なぜ Nane に数値を入れようとしているのか気になります。 数値を設定するなら、図形データの定義で 数値の項目 YEN を登録して vsoShape1.Cells(“Prop.YEN”).Formula = 26 のような使い方をする方が Visio では一般的のような気がします。 図形に紐づいた情報を管理するのはその方がいろいろ設定できるので便利だと思います。 以下の 回答は参考までに残しておきます。 追記前の情報 一番近い参考になりそうな資料は…(Continue Reading)

VBA Obtener fragmento de texto de un elemento html con id

publicado por: Anonymous Estoy tratando de acceder a una pagina web con una macro en Excel, introducir un código en un input, pulsar un botón y copiar el precio resultante de la búsqueda. Es este ultimo paso el que no logro. El elemento que contiene el precio tiene el id #result_ok pero uno de los…(Continue Reading)

VBA “error 5 en tiempo de ejecución”

publicado por: Anonymous Tengo una macro que crea tablas dinámicas y selecciona los datos que necesito y me funciona perfectamente en mi ordenador donde tengo Excel 2010. Lo he puesto en otro ordenador que tiene Excel 2007 y me indica: Error 5 en tiempo de ejecución Código donde me da el error: Columns(“A:I”).Select ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=…(Continue Reading)

Realizar AutoFill o FillDown en columna filtrada. Excel VBA

publicado por: Anonymous Buenos días, El problema que tengo es el siguiente. Después de hacer un filtro con criterio distinto a N/A, me sitúo en la primera celda filtrada para realizar un BUSCARV. Esta operación la realiza perfectamente, el problema está en cuanto quiero hacer un Autofill o Filldown el cual lo único que realiza…(Continue Reading)

エクセル計算式=Σ(ai×bi)のA=Σaiを計算するvbaを探しています。

投稿者: Anonymous (例) =1*2+3*4           A=4 =1*2+3            A=4 =R1C1*R1C2+R1C3*R7C8   A=R1C1+R1C3 他の言語でも参考のページがあれば教えて下さい。よろしくお願いします。 ーーーーーーー 20180407追加 ありがとうございます。 Sub aTest() Cells(1, 5) = “=1*2+3*(-4)” Cells(2, 5) = “=1*2+3” Cells(3, 5) = “=3+1*2” Cells(4, 1) = “1” Cells(4, 2) = “2” Cells(4, 3) = “3” Cells(4, 4) = “4” Cells(4, 5) = “=R4C1*R4C2+R4C3*R4C4” ‘ Cells(1, 7) = sigmaA(Cells(1, 5))…(Continue Reading)

Macro de Excel Error 1004: Error definido por la aplicación o el objeto

publicado por: Anonymous Mi idea para el archivo es que cada vez que se cargue un campo, se asegure que el anterior ya se encuentre cargado. Tengo la siguiente macro: Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range(“A:D”)) Is Nothing Then direc = ActiveCell.Address If Target.Count > 1 Then Range(direc).Select End If If…(Continue Reading)

入力を終えたセル内の特定の文字列の数を増やしたい

投稿者: Anonymous やりたいことは以下の通りです。  ①対象セル群のうち一つに文字列を入力し、下キーまたはTabキーで移動する  ②その際、セルの文字列のうち、特定の文字をReplace関数で1個から2個に増やす   ※対象セル群はD列の2行目以下全てを対象とする 上記内容は下記コードで概ね実現出来たのですが、問題が残っております。  ①やや冗長に感じる  ②範囲指定がうまくいっていない   ・D列セルから下に移動した時にコードが実行されない。   ・なぜかE列では下移動時のコードが実行される。    ただ、セルが二度目にアクティブになった時に実行される。    しかし、E列では右移動時コードは実行されない。 以上、どなたかアドバイスを頂けないでしょうか。 何卒よろしくお願いいたします。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) ‘①アクティブセルの一つ左のセル(LeftCell)の内容を操作する。 Dim LeftCell As Range, i As Long, kazA As Long Set LeftCell = ActiveCell.Previous ‘②アクティブセルの一つ上のセル(UperCell)の内容を操作する。 Dim UperCell As Range, ii As Long, kazB As Long Set UperCell = ActiveCell.Offset(-1, 0) ‘LeftCell内の、2個にしたい文字をカウントする For i…(Continue Reading)