その他(プログラミング・開発)

全20620件中1~20件表示
  • 報酬付き

    複数csvファイルをexcelの各シートに書込む2

    前回powershellを使い複数のcsvをそれぞれのシートに分けて新規Excelファイルとして書き込む方法についてお教え頂きましたが、既存ファイルの場合下記の下記のコードのようにすると既存シートがある場合既存のシートにシート名を変え書き加えられることになります。既存シートをそのままにして新規シートとして追加するような方法をお教えください。 $csvFiles = @("D:\test_data\test_data1.csv", "D:\test_data\test_data2.csv") # Excelファイルのパス $excelPath = (Get-ChildItem "D:\test_data\AAA.xlsx").FullName $excel = New-Object -ComObject Excel.Application $excel.Visible = $true $book = $excel.Workbooks.Open($excelPath) foreach ($index in 0..($csvFiles.Length - 1)) { if ($index -eq 0) { $sheet = $book.Sheets.Item(1) } else { $sheet = $book.Sheets.Add() } $sheet.Name = "data" + ($index + 1) $startRange = "C2" $QueryTable = $sheet.QueryTables.Add("TEXT;"+$csvFiles[$index], $sheet.Range($startRange)) $QueryTable.TextFileCommaDelimiter = $True $QueryTable.TextFilePlatform = 65001 $QueryTable.TextFileStartRow = 1 $QueryTable.Refresh($false) $QueryTable.Name = "仮テーブル" $QueryTable.Delete() } [System.Runtime.Interopservices.Marshal]::ReleaseComObject($sheet) > $null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($book) > $null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) > $null Remove-Variable sheet, book, excel [gc]::Collect() [GC]::WaitForPendingFinalizers() なお、csvファイルの指定方法は違います(ファイル名で指定する方が分からないのでコピペのコードそのままに近い)がExport-Excelを使った下記コード場合同じシート名がある場合は、そのシートに書き込まれますがそれ以外は新規シート名(csvファイル名)として付け加えられます。 $csvs = Get-ChildItem .\* -Include *.csv $csvCount = $csvs.Count Write-Host "Detected the following CSV files: ($csvCount)" foreach ($csv in $csvs) { Write-Host " -"$csv.Name } $excelFileName = "D:\test_data\AAD.xlsx." Write-Host "Creating: $excelFileName" foreach ($csv in $csvs) { $csvPath = ".\" + $csv.Name $worksheetName = $csv.Name.Replace(".csv","") Write-Host " - Adding $worksheetName to $excelFileName" Import-Csv -Path $csvPath | Export-Excel -Path $excelFileName -WorkSheetname $worksheetName -StartRow 2 -StartColumn 3 } しかしならこの方法では大きなデータの場合処理時間を要することになります。処理時間で言うなら下記コードの方が一番速いですがやはり新規シートに置き換えられる問題があります。 $sourceFiles = @("D:\test_data\test_data1.csv", "D:\test_data\test_data2.csv") $outputFile = "D:\test_data\AAE.xlsx" $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false $outputWorkbook = $excel.Workbooks.Add() $index=1; foreach ($sourceFile in $sourceFiles) { $workbook = $excel.Workbooks.Open($sourceFile) foreach ($sheet in $workbook.Sheets) { $sheet.Copy([ref]$outputWorkbook.Sheets.Item($outputWorkbook.Sheets.Count)) } $index=$outputWorkbook.Sheets.Count $workbook.Close($false); } $outputWorkbook.Sheets.Item($index).Delete() $outputWorkbook.SaveAs($outputFile); $excel.Quit(); [System.Runtime.InteropServices.Marshal]::ReleaseComObject($outputWorkbook) | Out-Null; [System.Runtime.InteropServices.Marshal]::ReleaseComObject($excel) | Out-Null; Write-Output "Sheets have been combined into $outputFile"; 私のコピペ能力ではここまでです。シート名が同じの場合は上書きされそれ以外は新規シートとして追加される方法になれば幸いです。よろしくお願いいたします。

  • 報酬付き

    AsteriaでZファイルの展開がしたい

    Asteriaを勉強しています。 Zファイルを展開したいのですが、アーカイブコンポーネントにはzip.GZ.TARしかありません。 FTPスクリプトでやろうかと思いましたが、umcompressはサポートされていませんでした。 なにか方法ありませんでしょうか?

  • 複数csvファイルをexcelの各シートに書き込む

    複数のCSVファイルを各々一つのexcelファイルの各ワークシトに書き込む方法のコードを下記のようにQueryTableを使った形にしてみました。 $csvFile1 = "D:\test_data\test_data1.csv" $csvFile2 = "D:\test_data\test_data2.csv" $excel = New-Object -ComObject Excel.Application $excel.Visible = $true $book = $excel.Workbooks.Add() $Book.Worksheets.Add() $sheet1 = $excel.Worksheets.Item(2) $sheet2 = $excel.Worksheets.Item(1) $startRange = "C2" $outputColumn = $sheet1.Range($startRange).Column $outputRow = $sheet1.Range($startRange).Row $QueryTable = $sheet1.QueryTables.Add("TEXT;$csvFile1",$sheet1.cells($outputRow,$outputColumn)) $QueryTable.TextFileCommaDelimiter = $True $QueryTable.TextFilePlatform = 65001 $QueryTable.TextFileStartRow = 1 $QueryTable.Refresh($false) $QueryTable.Name = "仮テーブル" $QueryTable.Delete() $startRange = "C2" $outputColumn = $sheet2.Range($startRange).Column $outputRow = $sheet2.Range($startRange).Row $QueryTable = $sheet2.QueryTables.Add("TEXT;$csvFile2",$sheet2.cells($outputRow,$outputColumn)) $QueryTable.TextFileCommaDelimiter = $True $QueryTable.TextFilePlatform = 65001 $QueryTable.TextFileStartRow = 1 $QueryTable.Refresh($false) $QueryTable.Name = "仮テーブル" $QueryTable.Delete() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($sheet) > $null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) > $null [gc]::Collect() これは2個のcsvファイルだから何とかなっていますがファイルが増えた場合これではとても面倒なことになります。私の能力ではコンパクトにコードを纏めることが出来ません。コンパクトな方法をお教えください。別にExport-Excel等使う方法でもかまいません。

  • 報酬付き

    プログラムのサイトについて。

    https://codersforkids.com/%e4%b8%ad%e5%ad%a6%e7%94%9f%e5%90%91%e3%81%91%e3%81%8a%e3%81%99%e3%81%99%e3%82%81%e7%84%a1%e6%96%99%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e5%ad%a6/ 以下のURLのサイトで、C#とC++があるサイトは、ありますでしょうか?教えて頂けると幸いです。

  • マリオみたいなゲームの作り方 Unity2D

    Unity2Dでマリオ風のゲームを作っています。 操作、当たり判定等は作れるのですが、実際のスーパーマリオと比較するとプレイキャラクターと地面の接触がガタガタしているように感じます。 おそらくプレイキャラクターと地面の当たり判定が重なる瞬間があることが原因だとおもうのですが、それらを防ぐ処理や設定というのがわかりません。 おすすめの当たり判定……みたいなものってありますでしょうか?

  • 報酬付き

    [Scratch]これはScratchのバグか?

    今、Minecraftのパクリみたいな(改良はします。そこんとこ了承ください)ゲームを作っています。画面、プレイヤーの右側に木があるとおもいますが、その木の下部のブロックと上部のブロックで、ズレがありますよね。これってバグなのでしょうか?  必要だと思うので、仕組みを書いておきます。 [仕組み] ①プレイヤーは動くと変数 "Xズレ" を動きに合わせて増減させる。 (右に動くと+1、左に動くと-1) ②ブロックたちは、"Xズレ" の5倍(プレイヤーの移動速度)のX座標にいる。 この動きの中でなぜかズレが発生しています。

  • 数階層のあるフォルダのコピーを 簡単にするVBA

    数階層のあるフォルダのコピーを 簡単にするVBAのプログラムについての ご質問です たとえばフォルダがみっつ、フォルダA フォルダB、フォルダCとあるとします これらのなかには人物のIDと対応するフォルダがあり それぞれのフォルダには、そのIDの人物に関する書類pdfが 入っています たとえばフォルダAにそのサブフォルダとして サブフォルダ1があり、そのなかにpdfファイルがいくつかあります サブフォルダ2も同様です サブフォルダ3,4,・・・・ フォルダBではサブフォルダがサブフォルダ_あ サブフォルダ_い,,, とあり、さらにサブフォルダ_あのなかにIDに対応するサブサブフォルダ11, 12.13とあり それぞれに多種のpdfファイルが入っています なかには例えばですが、サブフォルダ_いのなかにも、さきほどのフォルダAのなかにあったID2に対応するサブフォルダ2が入っています。 これらをすべて統括するような総合フォルダにIDに対応するフォルダだけで まとめあげたいという目的なのですが、 上記のフォルダ2のように別の上層階のフォルダから移動するときに、上書きをするか、別名で保存するか問われますが、フォルダ2で統一して、そのかなのpdfファイルに同名のファイルがあれば、片方をそのまま もう一方を---(1)のような ファイル名に変換して上書きされないようにしたく思います 数百のフォルダがあるので、なんとかコードで作れないか お尋ねしたく思います わかりにくい説明ですみません 簡単な図示を添付致します すみません 宜しくお願い致します 言い方を変えますと、 個人それぞれがID番号を持っていて、ID番号が名称の フォルダがあり、そのなかにpdfファイルが任意の数、格納されており、 そのID対応のフォルダが、いくつかのフォルダのなかに分散されていて、 その階層は一定ではないですが、IDフォルダは各フォルダの最下層にあるものであり、 最終的にはすべてのIDgフォルダをひとつの統合フォルダにまとめあげたい。 なかには別フォルダのなかに重複して、あるIDフォルダによっては分散しているので 統合するときに上書きを問われてしまう それを ひとつのIDフォルダに統合し、そのなかのpdfファイルも上書きはしないで 別名保存で そのIDフォルダに保存したい というわけです かえってわかりにくくなったかもしれません 宜しくお願い致します

  • プログラミングは専用のソフトか何かで行うのですか?

    プログラミングについてですが、 プログラミング言語というのが色々とあるそうですが、 プログラミングってソフトか何かで行うのですか? 色々なプログラミング言語をソフトか何かに書くのですか? プログラミング言語ごとにソフトがある感じですか? プログラミング言語ごとにソフトが違うのですか? 初心者でも分かる感じでお願いします。

  • Libre表計算アプリでリネーム マクロを作りたい

    エクセルでは作動しているVBAマクロがあります。 これをlibreで動くマクロに作り変えたい。 コードはむやみに開示しないことを条件にいただいたものなので、ここでは提示は控えます。 作りたいのはリネームアプリになりますが、Libreは初めてなので独学でやるとかなり遠回りになりそうなのでお教え願いたいです。 以下の流れのコードを作るのに、このサイトを参考にしろと教えていただきたいのです。 1 シート上のボタン1を押すとダイアログ1が現れる 2 ダイアログ1上の参照ボタンを押すと、リネームしたいファイルがあるフォルダを選ぶエクスプローラのような画面が現れる。 3 選んだフォルダのパスをダイアログ1のテキストboxに表示 1はここを見ろ 2はここを見ろ 3はここを見ろ と教えてください。

  • Woocommerceのパンくずリスト先の設定

    WordPressのWoocommerceで作成した、商品詳細ページに表示される、パンくずリストのリンク先のページを修正したいです。 Woocommerceで商品ページを作成すると、そのページの左上にパンクズリストが表示されます。 HOME > カテゴリページ > 商品詳細ページ という感じです。 このカテゴリページにあたるページの修正をいろいろと探してみましたが、どこで行うかがわからないです。 また、パーマリンクを設定して、そのリンクにはまるように固定ページを作成したのですが、その固定ページにはジャンプしないで、カテゴリ名が入った、メイン部分が空のどこで設定されているかわからないページにジャンプします(404ページにはならないです)。 この、商品詳細ページの上位のカテゴリページ(上記のメイン部分が空になるページ)をどこで修正するか知りたいのと、またはそのリンク先を設定した固定ページに飛ぶようになるか、どちらかで解決したいです。 よろしくお願いいたします。

  • アクセス クエリー抽出条件 今月初日から

    winXp access2003 クエリー デザインビューにおいて 日付フィールドを 今月の初日からで 検索したいのですが 抽出条件を >=""Year(Now())"/"Month(Now())"/"1"" >="Year(Now())"/"Month(Now())"/"1" これですと いずれも うまくいきません 抽出条件で データ型が一致しません とでます 宜しくお願い致します

  • accessからエクセルのデータ転送上書きVBA

    宜しくお願い致します win10 access365 先日、ここでお尋ねした アクセスファイルのVBAコードからエクセルファイルを作成するための コードをお尋ねし、以下では L.xlsxが作成されて、 アクセスのテーブル KJKTから データ転送が 行われるというコードを教示頂きました しかしながら 同様の操作をするときに L.xlsxのデータが 上書きされずに 以前に作ったデータのまま 残ってしまってました そこで 以下のようなエクセルVBAを R.xlsmに作りました Ldataclear() です 毎回 このマクロを実行して いったんL.xlsxの データを当該シートから削除して まっさらにして そのうえで Exp123()を実行すれば 目的は叶うのですが 迂遠なような気もしました もっと簡単に 上書き保存のできる コードなど あるのでありましたら 御教示くださいませ 宜しくお願い致します Private Function Exp123() '変数宣言 Dim srchXls As String 'Excelエクスポート先のファイルパス srchXls = "C:\Users\USER\Desktop\ACCESS\L.xlsx" 'Excelファイルの出力 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "KJKT", srchXls, True, "output" 'Excelファイルをエクスポートした旨を通知する。 MsgBox "Excelをエクスポートしました。" End Function ---------------------- Public Function ExcelRmacro() Dim oApp As Object Set oApp = CreateObject("Excel.Application") oApp.Visible = True 'Only XL 97 supports UserControl Property On Error Resume Next oApp.UserControl = True 'ファイルを開く oApp.Workbooks.Open FileName:="C:\Users\USER\Desktop\ACCESS\R.xlsm" oApp.Application.Run ("'R.xlsm'!Ldataclear") End Function -------------------------------- Sub Ldataclear() ' FilePath = "C:\Users\USER\Desktop\ACCESS\L.xlsx" 'ここにファイルの場所ファイル名を記載 Set Wb = GetObject(FilePath) Set Ws = Wb.Worksheets("output") 'ここにシートを記載する Ws.Cells.Delete Wb.Save Application.CutCopyMode = False ActiveWorkbook.Save End Sub

  • ACCESS コンボボックス 日付入力VBA

    win10 office365 access365におきまして フォーム Fを開いて そのなかの非連結テキストが コンボボックスになっており そのコンボボックス名をcombo としますとき そこに規定の文字列 これは そのコンボボックスの選択文字列として あるもので たとえば、あかさ この文字列は コンボボックスを開くと 第1列に表示されます 一番左側です を入れたいとき Sub Sample() DoCmd.OpenForm "F", acNormal Form![F]!combo = "あかさ" end sub フォームFは当然開くのですが 非連結コンボボックス comboは 空白のままです Form![F]!combo = "あかさ" ここの部分を Form![F]!combo.column(0) = "あかさ" または Form![F]!combo.column(1) = "あかさ" としても 同様の結果となります ② もうひとつすみませんが テキストボックス コメントテキストに 本日の日付で 4月17日であれば 0417 と入れたいので Forms![F]![コメントテキスト] = Format(Now, mmdd) としますと 2024/04/17 13:02:59 と出てしまいます できるものなら 全角で 0417 と打ち出したいのですが、、 重ねて 恐縮ですが 御教示宜しくお願い致します

  • アクセス フォームの非連結テキストに入力VBA

    win10 office365 access365におきまして フォーム Fを開いて そのなかの非連結テキスト textが あるとしまして そこに規定の文字列 たとえば、あいう を入れたいとき Sub Sample() Dim cn As ADODB.Connection Set cn = CurrentProject.Connection DoCmd.OpenForm "F", acNormal Form![F]!text1 = "あいう" end sub フォームFは当然開くのですが 非連結のテキスト textは 空白のままです ちなみに 通常の使い方は このテキスト text1の空欄に カーソルを合わせて 文字を打ち込んで行き 最後は 既製の保存ボタンをクリックすることにより 別テーブルに非連結テキストに入力した値を保存する流れになりますが、 この非連結テキストが複数ありまして テンプレートを作りたいので 上記のようなコードを 考えました すみませんが 不足しているポイントの 御教示宜しくお願い致します

  • エクセル 保存是非のダイアログを出さずに保存VBA

    エクセル 保存是非のダイアログを出さずに保存VBA エクセルファイルの ひとつのブック L.xlsxの特定のセルを 別のブックR.xlsxのセルにコピーするを VBAコードで コピーまでは出来たのですが R.xlsxのブックを保存するかどうかの ダイアログが出てしまいます これが出ないで保存できるように ActiveWorkBook.Save これを入れてもやはり保存是非の確認が 出てしまいます コードは -------------------- Sub ID移動() Dim x As Workbook Dim y As Workbook Workbooks.Open Filename:="C:\Users\USER\Desktop\ACCESS\L.xlsx" Set x = Workbooks("L.xlsx") Workbooks.Open Filename:="C:\Users\USER\Desktop\ACCESS\R.xlsx" Set y = Workbooks("R.xlsx") y.Sheets("sheet1").Range("A2") = x.Sheets("output").Range("B2") x.Close y.Close ActiveWorkBook.Save End Sub ------------------ 保存是非のダイアログがでないで 保存できるための方法を 御教示いただけますか win10 office365 すみませんが 宜しくお願い致します

  • githubの使い方

    githubを良く理解できていないので、おかしな質問かもしれませんが許してください。 パブリックに公開されているリポジトリをcloneしました。 それをいじったり、別のプログラムと同じフォルダにまとめたりしました。 そのフォルダを、自分のプライベートリポジトリにバックアップするにはどうすればいいですか?

  • [プログラミング]パクリとされる・なる領域

    最近、Minecraftを趣味でやってたときに、「Minecraftって天才だな」って思ったんですよ。 そのデザイン性とか設定とか、あらゆるところに気が配られてて、今更鳥肌が立ちました。 そこで、アイデアがほしいのですが、なるべくMinecraftの特徴を残したまま、誰が見ても別ゲーなものになるようにしたいです。 また、ストーリーではなく、ゲームの「世界観」を考えてほしいです。         ↓読んで *質問主がいいと思った案は、回答者様の許可を取ることができれば、作らせていただきます。なので、「回答者様の案を更に改良してだすなら良い」という考えの人は末尾に「A」、「そのままで作って良い」という考えの人は末尾に「B」、「あくまで参考にするのみ」という考えの人は末尾に「C」と入れてください。これは必須でお願いします。 (↑尚、これは採用制) *また、希望する方のみ、希望された名前で「SuperThanks」として名前を挙げさせていただきます。 (↑尚、これは回答者様全員)

  • エクセルファイル 行列入れ替えたもの同時作成VBA

    あるxmlファイルを一旦テキストファイルにして そこから数値をエクセルファイルに移行して ひとつはM.xlsxとし それに続いて行列を入れ替えた エクセルファイルR.xlsxを 作りたいのですが M.xlsx R.xlsxのそれぞれを作るコードを 単純に 合体させただけでは どうも できません M.xlsxだけ また R.xlsxだけの 作成するコードは 出来たのですが それぞれ別のマクロとして実行することになります ひとつのマクロでM.xlsx R.xlsx同時に 作成するVBAコードは可能でしょうか 宜しくお願い致します ちなみに該当コードを単純化して 合体したのが以下のものです win10 office10 Sub 783縦() Dim FileName As Variant ChDir "\\DESKTOP-O5\f" FileName = Application.GetOpenFilename(FileFilter:="xmlファイル,*.xml") If FileName = False Then MsgBox "キャンセルされました" Exit Sub End If FileCopy FileName, Left(FileName, InStrRev(FileName, "\")) & "テキスト.txt" Const MyFile = "\\DESKTOP-O5\f\テキスト.txt" Const Key1 = "<Name>" Const Key2 = "</Name>" Const Key3 = "<NameKana>" Const Key4 = "</NameKana>" Const PutBokName = "M.xlsx" Dim buf As String Dim Len1 As Long Dim Len2 As Long Dim Pos1 As Long Dim Pos2 As Long Dim Len3 As Long Dim Len4 As Long Dim Pos3 As Long Dim Pos4 As Long Dim PutBook As Workbook With CreateObject("ADODB.Stream") .Charset = "UTF-8" .Open .LoadFromFile MyFile buf = .ReadText .Close End With Len1 = Len(Key1) Len2 = Len(Key2) Pos1 = InStr(buf, Key1) Pos2 = InStr(buf, Key2) Len3 = Len(Key3) Len4 = Len(Key4) Pos3 = InStr(buf, Key3) Pos4 = InStr(buf, Key4) Set PutBook = Workbooks.Add With PutBook.Sheets(1) .Cells(1, 1).Value = "氏名" .Cells(1, 2).Value = Mid(buf, Pos1 + Len1, Pos2 - (Pos1 + Len1)) .Cells(2, 1).Value = "氏名カナ" .Cells(2, 2).Value = Mid(buf, Pos3 + Len3, Pos4 - (Pos3 + Len3)) 'クリップボードをクリア Application.CutCopyMode = False PutBook.SaveAs ThisWorkbook.Path & "\" & PutBokName End With Const PutBokName = "R.xlsx" Dim buf As String Dim Len1 As Long Dim Len2 As Long Dim Pos1 As Long Dim Pos2 As Long Dim Len3 As Long Dim Len4 As Long Dim Pos3 As Long Dim Pos4 As Long Dim PutBook As Workbook With CreateObject("ADODB.Stream") .Charset = "UTF-8" .Open .LoadFromFile MyFile buf = .ReadText .Close End With Len1 = Len(Key1) Len2 = Len(Key2) Pos1 = InStr(buf, Key1) Pos2 = InStr(buf, Key2) Len3 = Len(Key3) Len4 = Len(Key4) Pos3 = InStr(buf, Key3) Pos4 = InStr(buf, Key4) Set PutBook = Workbooks.Add With PutBook.Sheets(1) .Cells(1, 1).Value = "氏名" .Cells(2, 1).Value = Mid(buf, Pos1 + Len1, Pos2 - (Pos1 + Len1)) .Cells(1, 2).Value = "氏名カナ" .Cells(2, 2).Value = Mid(buf, Pos3 + Len3, Pos4 - (Pos3 + Len3)) 'クリップボードをクリア Application.CutCopyMode = False PutBook.SaveAs ThisWorkbook.Path & "\" & PutBokName End With End Sub -------------------------------

  • プログラミング処理可能な人感センサー

    人感センサーで単純にオン・オフしたりするものは巷に溢れていますが、センサーの感知結果を、USBなどを介してパソコンにバイナリやテキストなどの形式で送信するものはありますか?プログラミングで処理できるものがあったらいいなと。

  • エクセル 列の合計のVBA

    エクセルの縦の列におきまして たとえば列A1からA31までの セル 数値が 入っています、を 合計してA33に返すとして これをコードのなかの 一連の作業として行いたいので VBAで試行錯誤していますが Cells(33, "A").Value = Application.WorksheetFunction.Sum("Cells(1, "A"):Cells(31, "A")") Cells(33, "A").Value = Application.WorksheetFunction.Sum("A1:A31") いずれも稼働しません 宜しくお願い致します win10 office365